Skip to content

Commit 925d16e

Browse files
committed
chore(behavior): remove some CoreRegistry usage
1 parent 558c841 commit 925d16e

File tree

9 files changed

+69
-61
lines changed

9 files changed

+69
-61
lines changed

engine-tests/src/test/java/org/terasology/engine/logic/behavior/CountCallsTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
// Copyright 2021 The Terasology Foundation
1+
// Copyright 2022 The Terasology Foundation
22
// SPDX-License-Identifier: Apache-2.0
33
package org.terasology.engine.logic.behavior;
44

55
import com.google.common.collect.Lists;
66
import com.google.gson.GsonBuilder;
77
import org.junit.jupiter.api.BeforeEach;
8+
import org.terasology.engine.context.internal.ContextImpl;
89
import org.terasology.engine.logic.behavior.core.Actor;
910
import org.terasology.engine.logic.behavior.core.BehaviorNode;
1011
import org.terasology.engine.logic.behavior.core.BehaviorState;
@@ -30,7 +31,7 @@ public void init() {
3031
nextId2 = 1;
3132

3233
gsonBuilder = new GsonBuilder();
33-
BehaviorTreeBuilder builder = new BehaviorTreeBuilder() {
34+
BehaviorTreeBuilder builder = new BehaviorTreeBuilder(new ContextImpl()) {
3435
@Override
3536
public BehaviorNode createNode(BehaviorNode node) {
3637
return new CountDelegate(node);

engine-tests/src/test/java/org/terasology/engine/logic/behavior/CounterTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
// Copyright 2021 The Terasology Foundation
1+
// Copyright 2022 The Terasology Foundation
22
// SPDX-License-Identifier: Apache-2.0
33
package org.terasology.engine.logic.behavior;
44

55
import org.junit.jupiter.api.BeforeEach;
66
import org.junit.jupiter.api.Test;
7+
import org.terasology.engine.context.internal.ContextImpl;
78
import org.terasology.engine.logic.behavior.actions.CounterAction;
89
import org.terasology.engine.logic.behavior.actions.Print;
910
import org.terasology.engine.logic.behavior.actions.TimeoutAction;
@@ -45,7 +46,7 @@ public void test() {
4546
@BeforeEach
4647
public void setup() {
4748

48-
treeBuilder = new BehaviorTreeBuilder();
49+
treeBuilder = new BehaviorTreeBuilder(new ContextImpl());
4950
treeBuilder.registerAction("print", Print.class);
5051
treeBuilder.registerDecorator("counter", CounterAction.class);
5152
treeBuilder.registerDecorator("timeout", TimeoutAction.class);

engine-tests/src/test/java/org/terasology/engine/logic/behavior/Example.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
// Copyright 2021 The Terasology Foundation
1+
// Copyright 2022 The Terasology Foundation
22
// SPDX-License-Identifier: Apache-2.0
33
package org.terasology.engine.logic.behavior;
44

55
import org.slf4j.Logger;
66
import org.slf4j.LoggerFactory;
7+
import org.terasology.engine.context.internal.ContextImpl;
78
import org.terasology.engine.logic.behavior.actions.Print;
89
import org.terasology.engine.logic.behavior.core.Actor;
910
import org.terasology.engine.logic.behavior.core.BaseAction;
@@ -19,7 +20,7 @@ private Example() {
1920
}
2021

2122
public static void main(String[] args) {
22-
BehaviorTreeBuilder treeBuilder = new BehaviorTreeBuilder();
23+
BehaviorTreeBuilder treeBuilder = new BehaviorTreeBuilder(new ContextImpl());
2324

2425
BehaviorNode node = treeBuilder.fromJson("{ sequence:[ success, success, failure ] }");
2526
logger.info("{}", new DefaultBehaviorTreeRunner(node, null).step());

engine/src/main/java/org/terasology/engine/core/ComponentSystemManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2021 The Terasology Foundation
1+
// Copyright 2022 The Terasology Foundation
22
// SPDX-License-Identifier: Apache-2.0
33
package org.terasology.engine.core;
44

@@ -200,7 +200,7 @@ public void initialise() {
200200
}
201201

202202
private void initialiseSystem(ComponentSystem system) {
203-
InjectionHelper.inject(system);
203+
InjectionHelper.inject(system, context);
204204

205205
if (console != null) {
206206
MethodCommand.registerAvailable(system, console, context);

engine/src/main/java/org/terasology/engine/logic/behavior/BehaviorSystem.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
// Copyright 2021 The Terasology Foundation
1+
// Copyright 2022 The Terasology Foundation
22
// SPDX-License-Identifier: Apache-2.0
33
package org.terasology.engine.logic.behavior;
44

55
import com.google.common.collect.Lists;
66
import org.slf4j.Logger;
77
import org.slf4j.LoggerFactory;
8+
import org.terasology.engine.context.Context;
89
import org.terasology.engine.core.PathManager;
910
import org.terasology.engine.entitySystem.entity.EntityManager;
1011
import org.terasology.engine.entitySystem.entity.EntityRef;
1112
import org.terasology.engine.entitySystem.entity.lifecycleEvents.OnActivatedComponent;
1213
import org.terasology.engine.entitySystem.entity.lifecycleEvents.OnAddedComponent;
13-
import org.terasology.engine.entitySystem.prefab.PrefabManager;
1414
import org.terasology.engine.entitySystem.systems.BaseComponentSystem;
1515
import org.terasology.engine.entitySystem.systems.RegisterMode;
1616
import org.terasology.engine.entitySystem.systems.RegisterSystem;
@@ -49,10 +49,11 @@ public class BehaviorSystem extends BaseComponentSystem implements UpdateSubscri
4949

5050
public static final Name BEHAVIORS = new Name("Behaviors");
5151
private static final Logger logger = LoggerFactory.getLogger(BehaviorSystem.class);
52+
5253
@In
53-
private EntityManager entityManager;
54+
private Context context;
5455
@In
55-
private PrefabManager prefabManager;
56+
private EntityManager entityManager;
5657
@In
5758
private AssetManager assetManager;
5859

@@ -116,7 +117,7 @@ public void save(BehaviorTree tree) {
116117
Path overridesPath = PathManager.getInstance().getHomeModPath().resolve(BEHAVIORS.toString()).resolve("overrides");
117118
savePath = overridesPath.resolve(uri.getModuleName().toString()).resolve("behaviors");
118119
}
119-
BehaviorTreeFormat loader = new BehaviorTreeFormat();
120+
BehaviorTreeFormat loader = new BehaviorTreeFormat(context);
120121
try {
121122
Files.createDirectories(savePath);
122123
Path file = savePath.resolve(uri.getResourceName() + ".behavior");

engine/src/main/java/org/terasology/engine/logic/behavior/CollectiveBehaviorSystem.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
// Copyright 2021 The Terasology Foundation
1+
// Copyright 2022 The Terasology Foundation
22
// SPDX-License-Identifier: Apache-2.0
33
package org.terasology.engine.logic.behavior;
44

55
import com.google.common.collect.Lists;
66
import org.slf4j.Logger;
77
import org.slf4j.LoggerFactory;
88
import org.terasology.engine.audio.StaticSound;
9+
import org.terasology.engine.context.Context;
910
import org.terasology.engine.core.PathManager;
1011
import org.terasology.engine.entitySystem.entity.EntityManager;
1112
import org.terasology.engine.entitySystem.entity.EntityRef;
1213
import org.terasology.engine.entitySystem.entity.lifecycleEvents.OnActivatedComponent;
1314
import org.terasology.engine.entitySystem.entity.lifecycleEvents.OnAddedComponent;
14-
import org.terasology.engine.entitySystem.prefab.PrefabManager;
1515
import org.terasology.engine.entitySystem.systems.BaseComponentSystem;
1616
import org.terasology.engine.entitySystem.systems.RegisterMode;
1717
import org.terasology.engine.entitySystem.systems.RegisterSystem;
@@ -52,10 +52,11 @@
5252
public class CollectiveBehaviorSystem extends BaseComponentSystem implements UpdateSubscriberSystem {
5353
public static final Name BEHAVIORS = new Name("Behaviors");
5454
private static final Logger logger = LoggerFactory.getLogger(BehaviorSystem.class);
55+
5556
@In
56-
private EntityManager entityManager;
57+
private Context context;
5758
@In
58-
private PrefabManager prefabManager;
59+
private EntityManager entityManager;
5960
@In
6061
private AssetManager assetManager;
6162

@@ -117,7 +118,7 @@ public void save(BehaviorTree tree) {
117118
Path overridesPath = PathManager.getInstance().getHomeModPath().resolve(BEHAVIORS.toString()).resolve("overrides");
118119
savePath = overridesPath.resolve(uri.getModuleName().toString()).resolve("behaviors");
119120
}
120-
BehaviorTreeFormat loader = new BehaviorTreeFormat();
121+
BehaviorTreeFormat loader = new BehaviorTreeFormat(context);
121122
try {
122123
Files.createDirectories(savePath);
123124
Path file = savePath.resolve(uri.getResourceName() + ".behavior");

engine/src/main/java/org/terasology/engine/logic/behavior/asset/BehaviorTreeFormat.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
// Copyright 2021 The Terasology Foundation
1+
// Copyright 2022 The Terasology Foundation
22
// SPDX-License-Identifier: Apache-2.0
33
package org.terasology.engine.logic.behavior.asset;
44

55
import com.google.common.base.Charsets;
6-
import org.slf4j.Logger;
7-
import org.slf4j.LoggerFactory;
8-
import org.terasology.gestalt.assets.ResourceUrn;
6+
import org.terasology.engine.context.Context;
97
import org.terasology.engine.logic.behavior.core.BehaviorNode;
108
import org.terasology.engine.logic.behavior.core.BehaviorTreeBuilder;
11-
import org.terasology.engine.registry.CoreRegistry;
9+
import org.terasology.gestalt.assets.ResourceUrn;
1210
import org.terasology.gestalt.assets.format.AbstractAssetFileFormat;
1311
import org.terasology.gestalt.assets.format.AssetDataFile;
1412
import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat;
@@ -29,15 +27,16 @@
2927
*/
3028
@RegisterAssetFileFormat
3129
public class BehaviorTreeFormat extends AbstractAssetFileFormat<BehaviorTreeData> {
32-
private static final Logger logger = LoggerFactory.getLogger(BehaviorTreeFormat.class);
30+
private final Context context;
3331

3432

35-
public BehaviorTreeFormat() {
33+
public BehaviorTreeFormat(Context context) {
3634
super("behavior");
35+
this.context = context;
3736
}
3837

3938
public void save(OutputStream stream, BehaviorTreeData data) throws IOException {
40-
BehaviorTreeBuilder builder = CoreRegistry.get(BehaviorTreeBuilder.class);
39+
BehaviorTreeBuilder builder = context.get(BehaviorTreeBuilder.class);
4140
OutputStreamWriter writer = new OutputStreamWriter(stream, Charsets.UTF_8);
4241
writer.write(builder.toJson(data.getRoot()));
4342
writer.close();
@@ -46,10 +45,10 @@ public void save(OutputStream stream, BehaviorTreeData data) throws IOException
4645

4746
@Override
4847
public BehaviorTreeData load(ResourceUrn resourceUrn, List<AssetDataFile> list) throws IOException {
49-
BehaviorTreeBuilder builder = CoreRegistry.get(BehaviorTreeBuilder.class);
48+
BehaviorTreeBuilder builder = context.getValue(BehaviorTreeBuilder.class);
5049
if (builder == null) {
51-
builder = new BehaviorTreeBuilder();
52-
CoreRegistry.put(BehaviorTreeBuilder.class, builder);
50+
builder = new BehaviorTreeBuilder(context);
51+
context.put(BehaviorTreeBuilder.class, builder);
5352
}
5453
try (InputStream stream = list.get(0).openStream()) {
5554
return load(stream);
@@ -58,11 +57,11 @@ public BehaviorTreeData load(ResourceUrn resourceUrn, List<AssetDataFile> list)
5857

5958

6059
public BehaviorTreeData load(InputStream stream) {
61-
BehaviorTreeBuilder builder = CoreRegistry.get(BehaviorTreeBuilder.class);
60+
BehaviorTreeBuilder builder = context.getValue(BehaviorTreeBuilder.class);
6261

6362
if (builder == null) {
64-
builder = new BehaviorTreeBuilder();
65-
CoreRegistry.put(BehaviorTreeBuilder.class, builder);
63+
builder = new BehaviorTreeBuilder(context);
64+
context.put(BehaviorTreeBuilder.class, builder);
6665
}
6766
BehaviorNode node = builder.fromJson(stream);
6867

engine/src/main/java/org/terasology/engine/logic/behavior/core/BehaviorTreeBuilder.java

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2021 The Terasology Foundation
1+
// Copyright 2022 The Terasology Foundation
22
// SPDX-License-Identifier: Apache-2.0
33
package org.terasology.engine.logic.behavior.core;
44

@@ -21,10 +21,10 @@
2121
import org.apache.commons.codec.Charsets;
2222
import org.slf4j.Logger;
2323
import org.slf4j.LoggerFactory;
24+
import org.terasology.engine.context.Context;
2425
import org.terasology.engine.core.module.ModuleManager;
2526
import org.terasology.engine.logic.behavior.BehaviorAction;
2627
import org.terasology.engine.logic.behavior.asset.BehaviorTree;
27-
import org.terasology.engine.registry.CoreRegistry;
2828
import org.terasology.engine.registry.InjectionHelper;
2929
import org.terasology.engine.utilities.gson.UriTypeAdapterFactory;
3030
import org.terasology.gestalt.assets.ResourceUrn;
@@ -54,10 +54,12 @@ public class BehaviorTreeBuilder implements JsonDeserializer<BehaviorNode>, Json
5454
private Gson gson;
5555

5656
private int nextId = 1;
57+
private final Context context;
5758

58-
public BehaviorTreeBuilder() {
59+
public BehaviorTreeBuilder(Context context) {
60+
this.context = context;
5961

60-
ModuleManager moduleManager = CoreRegistry.get(ModuleManager.class);
62+
ModuleManager moduleManager = context.get(ModuleManager.class);
6163

6264
if (moduleManager != null) {
6365
ModuleEnvironment environment = moduleManager.getEnvironment();
@@ -127,7 +129,7 @@ public void write(JsonWriter out, BehaviorTree value) throws IOException {
127129
@Override
128130
public BehaviorTree read(JsonReader in) throws IOException {
129131
String uri = in.nextString();
130-
AssetManager assetManager = CoreRegistry.get(AssetManager.class);
132+
AssetManager assetManager = context.getValue(AssetManager.class);
131133
return assetManager.getAsset(new ResourceUrn(uri), BehaviorTree.class)
132134
.orElse(assetManager.getAsset(new ResourceUrn("engine:default"), BehaviorTree.class).get());
133135

@@ -138,37 +140,37 @@ public BehaviorTree read(JsonReader in) throws IOException {
138140
}
139141

140142
@Override
141-
public BehaviorNode deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
143+
public BehaviorNode deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext jsonContext) throws JsonParseException {
142144
BehaviorNode node;
143145
if (json.isJsonPrimitive()) {
144-
node = getPrimitiveNode(json, context);
146+
node = getPrimitiveNode(json, jsonContext);
145147
} else {
146-
node = getCompositeNode(json, context);
148+
node = getCompositeNode(json, jsonContext);
147149
}
148150
node = createNode(node);
149151
return node;
150152
}
151153

152154
@Override
153-
public JsonElement serialize(BehaviorNode src, Type typeOfSrc, JsonSerializationContext context) {
155+
public JsonElement serialize(BehaviorNode src, Type typeOfSrc, JsonSerializationContext jsonContext) {
154156
JsonObject node = new JsonObject();
155157
if (src instanceof DelegateNode) {
156158
DelegateNode delegateNode = (DelegateNode) src;
157-
return serialize(delegateNode.delegate, BehaviorNode.class, context);
159+
return serialize(delegateNode.delegate, BehaviorNode.class, jsonContext);
158160
}
159161
if (src instanceof CompositeNode) {
160162
String name = src.getName();
161163
JsonArray array = new JsonArray();
162164
for (int i = 0; i < src.getChildrenCount(); i++) {
163-
array.add(serialize(src.getChild(i), BehaviorNode.class, context));
165+
array.add(serialize(src.getChild(i), BehaviorNode.class, jsonContext));
164166
}
165167
node.add(name, array);
166168
} else if (src instanceof ActionNode) {
167169
ActionNode actionNode = (ActionNode) src;
168170
JsonObject content;
169171
String name;
170172
if (actionNode.action != null) {
171-
content = (JsonObject) context.serialize(actionNode.action);
173+
content = (JsonObject) jsonContext.serialize(actionNode.action);
172174
name = actionNode.action.getName();
173175
} else {
174176
content = new JsonObject();
@@ -178,7 +180,7 @@ public JsonElement serialize(BehaviorNode src, Type typeOfSrc, JsonSerialization
178180
if (src instanceof DecoratorNode) {
179181
DecoratorNode decoratorNode = (DecoratorNode) src;
180182
if (decoratorNode.getChildrenCount() > 0) {
181-
content.add("child", serialize(decoratorNode.getChild(0), BehaviorNode.class, context));
183+
content.add("child", serialize(decoratorNode.getChild(0), BehaviorNode.class, jsonContext));
182184
}
183185
}
184186

@@ -193,14 +195,14 @@ public BehaviorNode createNode(BehaviorNode node) {
193195
return node;
194196
}
195197

196-
private BehaviorNode getPrimitiveNode(JsonElement json, JsonDeserializationContext context) {
198+
private BehaviorNode getPrimitiveNode(JsonElement json, JsonDeserializationContext jsonContext) {
197199
String type = json.getAsString();
198200
BehaviorNode node = createNode(type);
199201
if (actions.containsKey(type)) {
200-
Action action = context.deserialize(new JsonObject(), actions.get(type));
202+
Action action = jsonContext.deserialize(new JsonObject(), actions.get(type));
201203
addAction((ActionNode) node, action);
202204
} else if (decorators.containsKey(type)) {
203-
Action action = context.deserialize(new JsonObject(), decorators.get(type));
205+
Action action = jsonContext.deserialize(new JsonObject(), decorators.get(type));
204206
addAction((ActionNode) node, action);
205207
}
206208
return node;
@@ -210,11 +212,11 @@ private void addAction(ActionNode node, Action action) {
210212
action.setId(nextId);
211213
nextId++;
212214
node.setAction(action);
213-
InjectionHelper.inject(action);
215+
InjectionHelper.inject(action, context);
214216
action.setup();
215217
}
216218

217-
private BehaviorNode getCompositeNode(JsonElement json, JsonDeserializationContext context) {
219+
private BehaviorNode getCompositeNode(JsonElement json, JsonDeserializationContext jsonContext) {
218220
String type;
219221
JsonObject obj = json.getAsJsonObject();
220222
Map.Entry<String, JsonElement> entry = obj.entrySet().iterator().next();
@@ -224,16 +226,16 @@ private BehaviorNode getCompositeNode(JsonElement json, JsonDeserializationConte
224226
BehaviorNode node = createNode(type);
225227

226228
if (actions.containsKey(type)) {
227-
Action action = context.deserialize(jsonElement, actions.get(type));
229+
Action action = jsonContext.deserialize(jsonElement, actions.get(type));
228230
addAction((ActionNode) node, action);
229231
} else if (decorators.containsKey(type)) {
230-
Action action = context.deserialize(jsonElement, decorators.get(type));
232+
Action action = jsonContext.deserialize(jsonElement, decorators.get(type));
231233
addAction((ActionNode) node, action);
232234
JsonElement childJson = jsonElement.getAsJsonObject().get("child");
233-
BehaviorNode child = context.deserialize(childJson, BehaviorNode.class);
235+
BehaviorNode child = jsonContext.deserialize(childJson, BehaviorNode.class);
234236
node.insertChild(0, child);
235237
} else if (jsonElement.isJsonArray()) {
236-
List<BehaviorNode> children = context.deserialize(jsonElement, new TypeToken<List<BehaviorNode>>() {
238+
List<BehaviorNode> children = jsonContext.deserialize(jsonElement, new TypeToken<List<BehaviorNode>>() {
237239
}.getType());
238240
for (int i = 0; i < children.size(); i++) {
239241
BehaviorNode child = children.get(i);

0 commit comments

Comments
 (0)