-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclasses.plantuml
282 lines (218 loc) · 6.2 KB
/
classes.plantuml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
@startuml
' -- ArcticWolf Game Engine Class Diagram -- '
package "Asset Management" #eeeeee {
class aw::AssetStore <<Static>> {
- unordered_map<sf::Font> m_fonts;
- unordered_map<sf::Image> m_images;
- unordered_map<sf::Sound> m_sounds;
}
}
package "Game State Subsystem" #eeeeee {
interface aw::GameState {
+ void render (double)
+ void update ()
}
class aw::GameStateManager <<Static>> {
- vector<aw::GameState> m_states
+ void render (double)
+ void update ()
}
class aw::GameStateStore <<Static>> {
- unordered_map<string, aw::GameState> m_states
}
}
package "Processing" #eeeeee {
class aw::GameLoop <<Static>> {
- thread m_updateThread
+ void run ()
+ void freeze ()
+ void stop ()
}
}
package "Input Handling" #eeeeee {
class aw::Controller
class aw::Keybinding
class aw::LoopKeybinding
}
package "Logging Subsystem" #eeeeee {
class aw::Log <<static>>
class aw::LogObserver
class aw::ConsoleLogObserver
class aw::FileLogObserver
class aw::FunctionLogObserver
enum aw::LogLevel {
UNDEFINED
VERBOSE
NOTICE
WARNING
ERROR
}
}
package "PCG Subsystem" #eeeeee {
interface aw::TilePlaneGenerator
interface aw::EntitySpawner
}
package "Rendering Subsystem" #eeeeee {
class aw::Scene
interface aw::Layer
class aw::TileLayer
class aw::SpriteLayer
class aw::UILayer
interface aw::SpriteComponent
interface aw::Renderable
class aw::TileRenderable
class aw::SpriteRenderable
class aw::UIRenderable
interface aw::Renderer
class aw::TileRenderer
class aw::SpriteRenderer
class aw::UIRenderer
}
package "World Subsystem" #eeeeee {
class aw::World
class aw::TilePlane
class aw::TileSet
class aw::TileType
class aw::EntityPlane
}
package "Entity Subsystem" #eeeeee {
interface aw::Entity
interface aw::EntityComponent
}
package "Entity Control Subsystem" #eeeeee {
interface aw::ControlComponent
class aw::InputControlComponent
class aw::NetworkClientControlComponent
class aw::NetworkServerControlComponent
}
package "AI Subsystem" #eeeeee {
interface aw::AIComponent
class aw::AIStateMachine
interface aw::AIState
class aw::AITransition
interface aw::Pathfinder
class aw::JPSPlusPathfinder
class aw::AStarPathfinder
interface aw::Hunter
class aw::CartesianHunter
class aw::RaycastCartesianHunter
}
package "UI Subsystem" #eeeeee {
interface aw::UIElement
interface aw::UIComponent
}
package "Window Management" #eeeeee {
class aw::Window <<Static>>
}
package "Filesystem Subsystem" #eeeeee {
class aw::File
}
package "I/O Subsystem" #eeeeee {
class aw::Console <<Static>>
}
package "SFML Assets" #bbbbee {
class sf::Font
class sf::Image
class sf::Sound
}
package "SFML Rendering" #bbbbee {
class sf::RenderTarget
class sf::RenderWindow
}
package "SFML Drawable" #bbbbee {
class sf::Drawable
class sf::Shape
class sf::RectangleShape
class sf::CircleShape
class sf::ConvexShape
class sf::Sprite
class sf::Text
}
package "FastNoise" #bbeebb {
class FastNoise
}
class aw::PriorityVector
class aw::PointerLess
class aw::PointerGreater
sf::Font ---o aw::AssetStore
sf::Image ---o aw::AssetStore
sf::Sound ---o aw::AssetStore
aw::GameState ---* aw::GameStateManager
aw::GameState ---* aw::GameStateStore
aw::GameStateManager ---> aw::GameStateStore
aw::GameStateManager ---> aw::GameState
aw::GameLoop ---> aw::Window
aw::GameLoop ---> aw::GameStateManager
aw::GameLoop ---> aw::Renderer
aw::Controller ---o aw::GameState
aw::Keybinding ---o aw::Controller
aw::LoopKeybinding ---o aw::Controller
aw::Controller ---> aw::Keybinding
aw::LogLevel ---o aw::Log
aw::GameStateManager ---> aw::Log
aw::GameLoop ---> aw::Log
aw::Window ---> aw::Log
aw::Layer ---* aw::Scene
aw::TileLayer ---|> aw::Layer
aw::SpriteLayer ---|> aw::Layer
aw::UILayer ---|> aw::Layer
sf::RenderWindow ---|> sf::RenderTarget
aw::Renderer ---> sf::RenderWindow
aw::TileRenderer ---|> aw::Renderer
aw::SpriteRenderer ---|> aw::Renderer
aw::UIRenderer ---|> aw::Renderer
aw::TileRenderable ---|> aw::Renderable
aw::SpriteRenderable ---|> aw::Renderable
aw::UIRenderable ---|> aw::Renderable
aw::SpriteComponent ---o aw::Renderable
aw::Renderer ---o aw::Layer
aw::LogObserver ---* aw::Log
aw::ConsoleLogObserver ---|> aw::LogObserver
aw::ConsoleLogObserver ---> aw::Console
aw::FileLogObserver ---|> aw::LogObserver
aw::File ---o aw::FileLogObserver
aw::FunctionLogObserver ---|> aw::LogObserver
aw::UIComponent ---* aw::UIElement
aw::UIElement ---o aw::UIElement
aw::UIElement ---* aw::UILayer
sf::Shape ---|> sf::Drawable
sf::Sprite ---|> sf::Drawable
sf::Text ---|> sf::Drawable
sf::RectangleShape ---|> sf::Shape
sf::CircleShape ---|> sf::Shape
sf::ConvexShape ---|> sf::Shape
aw::PriorityVector ---o aw::Scene
aw::PriorityVector ---o aw::UILayer
aw::PriorityVector ---o aw::SpriteLayer
aw::PriorityVector ---o aw::SpriteComponent
sf::Drawable ---o aw::Renderable
aw::AIComponent ----o aw::ControlComponent
aw::AIStateMachine ---o aw::AIComponent
aw::AIState ---* aw::AIStateMachine
aw::AITransition ---* aw::AIStateMachine
aw::Pathfinder ---* aw::AIState
aw::Hunter ---* aw::AIState
aw::JPSPlusPathfinder ---|> aw::Pathfinder
aw::AStarPathfinder ---|> aw::Pathfinder
aw::CartesianHunter ---|> aw::Hunter
aw::RaycastCartesianHunter ---|> aw::Hunter
aw::TileSet ---> aw::World
aw::TilePlane ---* aw::World
aw::EntityPlane ---* aw::World
aw::Entity ---* aw::EntityPlane
aw::TilePlane ---* aw::World
aw::TileSet ---* aw::World
aw::EntityPlane ---* aw::World
aw::Scene ---o aw::World
aw::TilePlane ---o aw::TileRenderable
aw::Renderer ---> aw::Renderable
aw::ControlComponent ----|> aw::EntityComponent
aw::InputControlComponent ---|> aw::ControlComponent
aw::NetworkClientControlComponent ---|> aw::ControlComponent
aw::NetworkServerControlComponent ---|> aw::ControlComponent
aw::TilePlaneGenerator ---> FastNoise
aw::TilePlaneGenerator ---* aw::TilePlane
aw::EntitySpawner ---* aw::EntityPlane
aw::PriorityVector ---> aw::PointerLess
aw::PriorityVector ---> aw::PointerGreater
@enduml