private static void GenericAct(ActOptions option, ICharacter character, ICharacter victim, Func <ICharacter, string> createPhraseFunc) { if (option == ActOptions.ToAll || option == ActOptions.ToRoom || option == ActOptions.ToNotVictim) { foreach (ICharacter to in character.Room.People) { if (option == ActOptions.ToAll || (option == ActOptions.ToRoom && to != character) || (option == ActOptions.ToNotVictim && to != victim)) { string phrase = createPhraseFunc(character); to.Send(phrase); } } } else if (option == ActOptions.ToCharacter) { string phrase = createPhraseFunc(character); character.Send(phrase); } else if (option == ActOptions.ToVictim) { string phrase = createPhraseFunc(character); victim.Send(phrase); } }
public static void Act(ActOptions options, string format, ICharacter character, object param1, object param2, params object[] parameters) { if (character?.Room == null) { Log.Default.WriteLine(LogLevels.Error, "Act with null ICharacter or null room"); return; } // Firstly, apply .net formatting string rawPhrase = string.Format(format, parameters); // Secondly, apply Mud formatting if (options == ActOptions.ToAll || options == ActOptions.ToRoom || options == ActOptions.ToNotVictim) { foreach (ICharacter to in character.Room.People) { if (options == ActOptions.ToAll || (options == ActOptions.ToRoom && to != character) || (options == ActOptions.ToNotVictim && to != (ICharacter)param1)) { string phrase = Format(rawPhrase, to, character, param1, param2); to.Send(phrase); } } } else if (options == ActOptions.ToCharacter) { string phrase = Format(rawPhrase, character, character, param1, param2); character.Send(phrase); } else if (options == ActOptions.ToVictim) { string phrase = Format(rawPhrase, (ICharacter)param1, character, param1, param2); ((ICharacter)param1).Send(phrase); } }
public static void Act(string format, ICharacter character, ICharacter victim, ActOptions option) { GenericAct(option, character, victim, target => CreatePhrase(format, target, character, victim)); }