-
Notifications
You must be signed in to change notification settings - Fork 0
/
ClassDiagram.txt
221 lines (170 loc) · 4.19 KB
/
ClassDiagram.txt
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
@startuml
class Unity.MonoBehaviour
class Unity.ScriptableObject
class GameManager {
+void Update()
+void FixedUpdate()
+void RegisterBasicObject(BasicObject _object)
}
class InputManager {
-Dictionary<KeyCode, List<ICommand>> keyBindings
+void RegisterKeyBinding(KeyCode _keyCode, ICommand _command)
+void UnregisterKeyBinding(KeyCode _keyCode, ICommand _command)
}
interface ICommand {
+void Execute()
}
abstract BasicObject {
BasicObject(GameManager _gameManager)
+void Update()
+void FixedUpdate()
}
class PrefabLibrary {
+bool hasPrefab(String _name)
+GameObject getPrefab(String _name)
+GameObject instantiatePrefab(String _name)
}
struct PrefabReference {
+String name
+GameObject prefab
}
interface ISceneBuilder {
+void BuildScene(GameManager _gameManager)
}
Unity.MonoBehaviour <|-- GameManager
PrefabLibrary *-- GameManager
PrefabReference "0..*" *-- PrefabLibrary
Unity.ScriptableObject <|-- PrefabLibrary
InputManager *-- GameManager
ISceneBuilder *-- GameManager
ICommand "0..*" -- InputManager
GameManager "1" *-- "0..*" BasicObject
package BaseBuilding {
class BaseBuildingManager #ddccff {
BaseBuildingManager(GameManager _gameManager)
+SetActiveState(BuildState _state)
}
interface IBuildState #ddccff {
+ void Update(BaseBuildingManager _manager)
}
class IdleState #ddccff {
+ void Update(BaseBuildingManager _manager)
}
class ConstructState #ddccff {
+ void Update(BaseBuildingManager _manager)
}
class DemolishState #ddccff {
+ void Update(BaseBuildingManager _manager)
}
struct StructureReference #eee6ff {
+ String prefabName
+ Type hologramType
StructureReference(String _prefabName, Type _hologramType)
}
class HologramStructure #ddccff {
-GameObject hologramObject
-GameObject resultStructure
+virtual void PositionStructure()
+virtual bool CanPlace()
+bool TryPlaceStructure()
}
class ExteriorStructure #ddccff {
+override void PositionStructure()
+override bool CanPlace()
}
class InteriorStructure #ddccff {
+override void PositionStructure()
+override bool CanPlace()
}
BasicObject <|-- BaseBuildingManager
BasicObject <|-- HologramStructure
HologramStructure <|-- ExteriorStructure
HologramStructure <|-- InteriorStructure
StructureReference "0..*" *-- ConstructState : Has library of
IBuildState *-- BaseBuildingManager : Active state
IBuildState <|-- ConstructState
IBuildState <|-- DemolishState
IBuildState <|-- IdleState
HologramStructure *-- ConstructState
}
package LocomotionAndSurvival{
Interface Locomotion #abdbe3{
-stateCheck GoundOrWater
+void DoMovement()
}
class Oxygen #abdbe3{
-int oxygenLevel
+void AddOxygen(int amount)
+void SubstractOxygen(int amount)
}
class GroundMovement #abdbe3{
-int movementSpeed
-int turnSpeed
-bool CanMove
+void DoMove()
}
class WaterMovement #abdbe3{
-int movementSpeed
-int turnSpeed
-bool CanMove
+void DoMove()
}
Player --* Oxygen
Player --* Locomotion
InputManager <-- Locomotion
GroundMovement ..|> Locomotion
WaterMovement ..|> Locomotion
}
package Crafting {
interface ICrafter #fbd4a8 {
- recipeList: sRecipeList
}
class DefaultCrafter #fbd4a8
class ItemEnhancer #fbd4a8
interface ICraftingResult #fbd4a8 {
}
class ItemPickup #fbd4a8 {
- mesh: Mesh;
- item: sItem
}
class sItem #fbd4a8 {
+ name: string
+ sprite: Image
}
class sRecipe #fbd4a8 {
- ingredients: Dictionary<Item, int>
- result: ICraftingResult
}
class sRecipeList #fbd4a8 {
- recipes: List<sRecipe>
}
class Player #fbd4a8 {
+ inventory: Inventory
}
class Inventory #fbd4a8 {
- inventorySlots : Dictionary<int, sItem>
- itemAmounts : Dictionary<sItem, int>
+ AddItem (sItem item, int amount): void
+ RemoveItem (sItem item, int amount): void
+ HasItems (sItem item, int amount): bool
}
abstract class ItemDecorator #fbd4a8
Unity.ScriptableObject <|-- sRecipe
Unity.ScriptableObject <|-- sRecipeList
Unity.ScriptableObject <|-- sItem
BasicObject <|-- ItemPickup
ItemPickup -up-* sItem
sRecipeList "0..*" --* sRecipe
sRecipe --* ICraftingResult
sRecipe "0..*" --* sItem
ICraftingResult <|.. sItem
BasicObject <|-- ICrafter
BasicObject <|- Player
ICrafter "0..1" -right-* sRecipeList
ICrafter <|.down. DefaultCrafter
ICrafter <|.down. ItemEnhancer
ItemEnhancer --o ItemDecorator
Player "1..0" -left-* Inventory
Inventory "*..0" -left-o sItem
}
@enduml