FuncOccurence.cs 935 B

1234567891011121314151617181920212223242526272829303132333435
  1. namespace Chronos
  2. {
  3. /// <summary>
  4. /// An occurrence action that is executed when time goes forward. Returns any object that will be transfered to the backward action if time is rewinded.
  5. /// </summary>
  6. public delegate T ForwardFunc<T>();
  7. /// <summary>
  8. /// An occurrence action that is executed when time goes backward. Uses the object returned by the forward action to remember state information.
  9. /// </summary>
  10. public delegate void BackwardFunc<T>(T transfer);
  11. internal sealed class FuncOccurence<T> : Occurrence
  12. {
  13. private ForwardFunc<T> forward { get; set; }
  14. private BackwardFunc<T> backward { get; set; }
  15. private T transfer { get; set; }
  16. public FuncOccurence(ForwardFunc<T> forward, BackwardFunc<T> backward)
  17. {
  18. this.forward = forward;
  19. this.backward = backward;
  20. }
  21. public override void Forward()
  22. {
  23. transfer = forward();
  24. }
  25. public override void Backward()
  26. {
  27. backward(transfer);
  28. }
  29. }
  30. }