62 lines
1.5 KiB
Markdown
62 lines
1.5 KiB
Markdown
```mermaid
|
|
classDiagram
|
|
|
|
namespace EventPipelines{
|
|
%% === Basisklassen ===
|
|
class FirebirdEventArgs {
|
|
<<abstract>>
|
|
}
|
|
|
|
class Pipeline~T~ {
|
|
- PipelineMaster : object
|
|
+ OnEvent : EventHandler~T~
|
|
+ SendEvent(sender : object, args : T)
|
|
}
|
|
|
|
class EventBus {
|
|
- pipelines : Dictionary~FirebirdEvent, Pipeline~T~>
|
|
- pendingHooks : Dictionary ~FirebirdEvent, List~Action~object~~
|
|
+ OnPipelineExist~T~(callback : Action<Pipeline~T~>, type : FirebirdEvent)
|
|
+ BuildPipeline~T~(type : FirebirdEvent, master : object) : Pipeline~T~
|
|
+ GetPipeline~T~(type : FirebirdEvent) : Pipeline~T~
|
|
}
|
|
|
|
%% === Spezialisierte Pipelines ===
|
|
class KeyboardPipeline {
|
|
<<inherits Pipeline~FirebirdKeyboardEventArgs~>>
|
|
}
|
|
|
|
class MousePipeline {
|
|
<<inherits Pipeline~FirebirdMouseEventArgs~>>
|
|
}
|
|
|
|
%% === EventArgs Spezialisierungen ===
|
|
class FirebirdKeyboardEventArgs {
|
|
<<inherits FirebirdEventArgs>>
|
|
}
|
|
|
|
class FirebirdMouseEventArgs {
|
|
<<inherits FirebirdEventArgs>>
|
|
}
|
|
|
|
%% === Enum ===
|
|
class FirebirdEvent {
|
|
<<enum>>
|
|
Tick
|
|
ModulesLoading
|
|
Startup
|
|
KeyboardInputs
|
|
MouseInputs
|
|
}
|
|
}
|
|
|
|
%% === Beziehungen ===
|
|
Pipeline~T~ <|-- KeyboardPipeline
|
|
Pipeline~T~ <|-- MousePipeline
|
|
FirebirdEventArgs <|-- FirebirdKeyboardEventArgs
|
|
FirebirdEventArgs <|-- FirebirdMouseEventArgs
|
|
EventBus -->Pipeline~T~
|
|
EventBus -->Pipeline~T~
|
|
|
|
|
|
``` |