BaseEffect.cs 1.4 KB

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