BaseEffect.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. namespace Terminal.Gui.TextEffects;
  2. public abstract class BaseEffectIterator<T> where T : EffectConfig, new()
  3. {
  4. protected T Config { get; set; }
  5. protected Terminal Terminal { get; set; }
  6. protected List<EffectCharacter> ActiveCharacters { get; set; } = new List<EffectCharacter> ();
  7. public BaseEffectIterator (BaseEffect<T> effect)
  8. {
  9. Config = effect.EffectConfig;
  10. Terminal = new Terminal (effect.InputData, effect.TerminalConfig);
  11. }
  12. public void Update ()
  13. {
  14. foreach (var character in ActiveCharacters)
  15. {
  16. character.Tick ();
  17. }
  18. ActiveCharacters.RemoveAll (character => !character.IsActive);
  19. }
  20. }
  21. public abstract class BaseEffect<T> where T : EffectConfig, new()
  22. {
  23. public string InputData { get; set; }
  24. public T EffectConfig { get; set; }
  25. public TerminalConfig TerminalConfig { get; set; }
  26. protected BaseEffect (string inputData)
  27. {
  28. InputData = inputData;
  29. EffectConfig = new T ();
  30. TerminalConfig = new TerminalConfig ();
  31. }
  32. /*
  33. public IDisposable TerminalOutput (string endSymbol = "\n")
  34. {
  35. var terminal = new Terminal (InputData, TerminalConfig);
  36. terminal.PrepCanvas ();
  37. try
  38. {
  39. return terminal;
  40. }
  41. finally
  42. {
  43. terminal.RestoreCursor (endSymbol);
  44. }
  45. }*/
  46. }