public void AddMudProg(MudProgData mprog) { if (!MudProgs.Contains(mprog)) { _mudProgs.Add(mprog); } }
public static bool Execute(this MudProgData mudProg, CharacterInstance mob, ILuaManager luaManager = null, ILogManager logManager = null) { if (mob.IsAffected(AffectedByTypes.Charm)) { return(false); } if (mudProg.IsFileProg) { throw new NotImplementedException("File-based MudProgs are not currently implemented!"); } try { (luaManager ?? LuaManager.Instance).DoLuaScript(mudProg.Script); } catch (Exception ex) { (logManager ?? LogManager.Instance).Error(ex); return(false); } return(true); }
public void Execute_Successful_Test() { var actor = new CharacterInstance(1, "TestChar"); var mprog = new MudProgData { Type = MudProgTypes.Act }; Assert.That(mprog.Execute(actor, _mockedLuaManager.Object, _mockedLogManager.Object), Is.True); }
public static MudProgData LuaCreateMudProg(string progType) { var newMudProg = new MudProgData { Type = EnumerationExtensions.GetEnumByName <MudProgTypes>(progType) }; _luaManager.Proxy.CreateTable("mprog"); AddLastObject(newMudProg); return(newMudProg); }
public void Execute_IsFileProg_Test() { var actor = new CharacterInstance(1, "TestChar"); var mprog = new MudProgData { Type = MudProgTypes.Act, IsFileProg = true }; Assert.Throws <NotImplementedException>( () => mprog.Execute(actor, _mockedLuaManager.Object, _mockedLogManager.Object), "Unit test expected a NotImplementedException to be thrown!"); }
public void Execute_IsCharmed_Test() { var actor = new CharacterInstance(1, "TestChar"); actor.AffectedBy.SetBit((int)AffectedByTypes.Charm); var mprog = new MudProgData { Type = MudProgTypes.Act }; Assert.That(mprog.Execute(actor, _mockedLuaManager.Object, _mockedLogManager.Object), Is.False); }
public void AddConversation(string keyword, string text) { if (string.IsNullOrEmpty(keyword) || string.IsNullOrEmpty(text)) { return; } MudProgData mp = new MudProgData { Type = MudProgTypes.Speech, ArgList = keyword, Script = $"LMobEmote(\"{text}\");" }; AddMudProg(mp); }
public void Execute_CatchesAndLogsException_Test() { bool callback = false; var actor = new CharacterInstance(1, "TestChar"); var mprog = new MudProgData { Type = MudProgTypes.Act }; _mockedLuaManager.Setup(x => x.DoLuaScript(It.IsAny <string>())).Throws(new LuaException("Test Exception")); _mockedLogManager.Setup(x => x.Error(It.IsAny <LuaException>())).Callback(() => { callback = true; }); Assert.That(mprog.Execute(actor, _mockedLuaManager.Object, _mockedLogManager.Object), Is.False); Assert.That(callback, Is.True); }
public static void CheckIfExecuteText(MobileInstance mob, MudProgData mudProg, string txt) { if (mudProg.ArgList.StartsWith("p ")) { if (txt.ContainsIgnoreCase(mudProg.ArgList)) { CheckIfExecute(mob, mudProg.Type); } return; } var words = mudProg.ArgList.Split(' '); foreach (var word in words.Where(txt.ContainsIgnoreCase)) { CheckIfExecute(mob, mudProg.Type); } }
public static void mudprog_read_programs(TextReaderProxy proxy, Template index) { for (; ;) { var letter = proxy.ReadNextLetter(); if (letter == '|') { return; } if (letter != '>') { LogManager.Instance.Bug("Vnum {0} MudProg Char", index.ID); throw new Exception(); } var prog = new MudProgData(); index.AddMudProg(prog); var type = (MudProgTypes)EnumerationFunctions.GetEnumByName <MudProgTypes>(proxy.ReadNextWord()); if (type == MudProgTypes.Error) { LogManager.Instance.Bug("Invalid mud prog type {0} for Index {1}", type, index.ID); throw new Exception(); } prog.Type = type; if (type == MudProgTypes.InFile) { prog.IsFileProg = false; prog.ArgList = proxy.ReadString(); mudprog_file_read(index, prog.ArgList); } else { // index.ProgTypes.SetBit((int)prog.Type); prog.IsFileProg = false; prog.ArgList = proxy.ReadString(); prog.Script = proxy.ReadString(); } } }
public static void mudprog_file_read(Template index, string filename) { var path = SystemConstants.GetSystemDirectory(SystemDirectoryTypes.Prog) + filename; using (var proxy = new TextReaderProxy(new StreamReader(path))) { do { var line = proxy.ReadLine(); if (line.StartsWith("|")) { break; } if (line.StartsWith(">")) { continue; } var type = (MudProgTypes)EnumerationFunctions.GetEnumByName <MudProgTypes>(proxy.ReadNextWord()); if (type == MudProgTypes.Error || type == MudProgTypes.InFile) { LogManager.Instance.Bug("Invalid mud prog type {0} in file {1}", type, path); continue; } var prog = new MudProgData { Type = type, ArgList = proxy.ReadString(), Script = proxy.ReadString(), IsFileProg = true }; index.AddMudProg(prog); break; } while (!proxy.EndOfStream); } }
public static void mpedit(CharacterInstance ch, MudProgData mprg, int mptype, string arguments) { // TODO }
public static void mpcopy(MudProgData source, MudProgData destination) { // TODO }
public static void warn_in_prog(CharacterInstance ch, int low, int high, string where, int vnum, MudProgData mprog, renumber_areas r_area) { // TODO }