Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove CoreRegistry usage: Part IV #1804

Merged
merged 10 commits into from
Jul 3, 2015
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ protected void setupComponentManager() {
@Override
protected void loadPrefabs() {

LoadPrefabs prefabLoadStep = new LoadPrefabs();
LoadPrefabs prefabLoadStep = new LoadPrefabs(context);

boolean complete = false;
prefabLoadStep.begin();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

package org.terasology;

import com.google.common.collect.Lists;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.nio.file.ShrinkWrapFileSystems;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
Expand All @@ -31,17 +30,12 @@
import org.terasology.context.Context;
import org.terasology.engine.ComponentSystemManager;
import org.terasology.engine.EngineTime;
import org.terasology.engine.TerasologyEngine;
import org.terasology.engine.Time;
import org.terasology.engine.bootstrap.EntitySystemSetupUtil;
import org.terasology.engine.modes.loadProcesses.LoadPrefabs;
import org.terasology.engine.module.ModuleManager;
import org.terasology.engine.paths.PathManager;
import org.terasology.entitySystem.entity.internal.EngineEntityManager;
import org.terasology.module.ClasspathModule;
import org.terasology.module.ModuleMetadata;
import org.terasology.module.ModuleRegistry;
import org.terasology.module.TableModuleRegistry;
import org.terasology.naming.Name;
import org.terasology.network.NetworkSystem;
import org.terasology.network.internal.NetworkSystemImpl;
Expand All @@ -52,7 +46,6 @@

import java.nio.file.FileSystem;
import java.nio.file.Path;
import java.util.Arrays;

import static org.mockito.Mockito.mock;

Expand Down Expand Up @@ -115,7 +108,7 @@ public void setup() throws Exception {

componentSystemManager = new ComponentSystemManager(context);
context.put(ComponentSystemManager.class, componentSystemManager);
LoadPrefabs prefabLoadStep = new LoadPrefabs();
LoadPrefabs prefabLoadStep = new LoadPrefabs(context);

boolean complete = false;
prefabLoadStep.begin();
Expand Down
5 changes: 2 additions & 3 deletions engine/src/main/java/org/terasology/config/BindsConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@
import org.terasology.module.ResolutionResult;
import org.terasology.module.predicates.FromModule;
import org.terasology.naming.Name;
import org.terasology.registry.CoreRegistry;

import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
Expand Down Expand Up @@ -126,8 +125,8 @@ public void setBinds(SimpleUri bindUri, Iterable<Input> inputs) {
/**
* @return A new BindsConfig, with inputs set from the DefaultBinding annotations on bind classes
*/
public static BindsConfig createDefault() {
ModuleManager moduleManager = CoreRegistry.get(ModuleManager.class);
public static BindsConfig createDefault(Context context) {
ModuleManager moduleManager = context.get(ModuleManager.class);
BindsConfig config = new BindsConfig();
DependencyResolver resolver = new DependencyResolver(moduleManager.getRegistry());
for (Name moduleId : moduleManager.getRegistry().getModuleIds()) {
Expand Down
6 changes: 4 additions & 2 deletions engine/src/main/java/org/terasology/config/InputConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
*/
package org.terasology.config;

import org.terasology.context.Context;

/**
* @author Immortius
*/
Expand All @@ -36,8 +38,8 @@ public void setMouseSensitivity(float mouseSensitivity) {
this.mouseSensitivity = mouseSensitivity;
}

public void reset() {
binds.setBinds(BindsConfig.createDefault());
public void reset(Context context) {
binds.setBinds(BindsConfig.createDefault(context));
InputConfig defaultConfig = new InputConfig();
setMouseSensitivity(defaultConfig.mouseSensitivity);
setMouseYAxisInverted(defaultConfig.mouseYAxisInverted);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.PixelFormat;
import org.terasology.context.Context;
import org.terasology.logic.players.LocalPlayer;
import org.terasology.network.events.ChangeViewRangeRequest;
import org.terasology.registry.CoreRegistry;
Expand Down Expand Up @@ -139,12 +140,12 @@ public ViewDistance getViewDistance() {
return viewDistance;
}

public void setViewDistance(ViewDistance viewDistance) {
public void setViewDistance(ViewDistance viewDistance, Context context) {
this.viewDistance = viewDistance;

// TODO: Remove this, switch to a property change listener
WorldRenderer worldRenderer = CoreRegistry.get(WorldRenderer.class);
LocalPlayer player = CoreRegistry.get(LocalPlayer.class);
WorldRenderer worldRenderer = context.get(WorldRenderer.class);
LocalPlayer player = context.get(LocalPlayer.class);
if (player != null) {
player.getClientEntity().send(new ChangeViewRangeRequest(viewDistance));
}
Expand Down
20 changes: 10 additions & 10 deletions engine/src/main/java/org/terasology/editor/TeraEd.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public final class TeraEd extends JWindow {
private TerasologyEngine engine;
private final Logger logger = LoggerFactory.getLogger(TeraEd.class);

private final SceneProperties sceneProperties = new SceneProperties();
private SceneProperties sceneProperties;

public static void main(String[] args) {
new TeraEd().run();
Expand All @@ -66,18 +66,18 @@ public void run() {
// If Nimbus is not available, you can set the GUI to another look and feel.
logger.warn("Failed to set look and feel to Nimbus", e);
}

LwjglCustomViewPort lwjglCustomViewPort = new LwjglCustomViewPort();
Collection<EngineSubsystem> subsystemList = Lists.<EngineSubsystem>newArrayList(new LwjglGraphics(), new LwjglTimer(), new LwjglAudio(), new LwjglInput(),
lwjglCustomViewPort);

engine = new TerasologyEngine(subsystemList);
mainWindow = new MainWindow(this);
lwjglCustomViewPort.setCustomViewport(mainWindow.getViewport());

try {
LwjglCustomViewPort lwjglCustomViewPort = new LwjglCustomViewPort();
Collection<EngineSubsystem> subsystemList = Lists.<EngineSubsystem>newArrayList(new LwjglGraphics(), new LwjglTimer(), new LwjglAudio(), new LwjglInput(),
lwjglCustomViewPort);

PathManager.getInstance().useDefaultHomePath();

engine = new TerasologyEngine(subsystemList);
sceneProperties = new SceneProperties(engine);
mainWindow = new MainWindow(this, engine);
lwjglCustomViewPort.setCustomViewport(mainWindow.getViewport());

engine.setHibernationAllowed(false);
engine.subscribeToStateChange(mainWindow);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@
import com.google.common.collect.Lists;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.terasology.context.Context;
import org.terasology.editor.EditorRange;
import org.terasology.engine.SimpleUri;
import org.terasology.reflection.copy.CopyStrategyLibrary;
import org.terasology.reflection.metadata.ClassMetadata;
import org.terasology.reflection.metadata.DefaultClassMetadata;
import org.terasology.reflection.metadata.FieldMetadata;
import org.terasology.reflection.copy.CopyStrategyLibrary;
import org.terasology.reflection.reflect.ReflectFactory;
import org.terasology.editor.EditorRange;
import org.terasology.registry.CoreRegistry;
import org.terasology.engine.SimpleUri;

import java.lang.reflect.Field;
import java.util.List;
Expand All @@ -45,10 +45,10 @@ public class ReflectionProvider<T> implements PropertyProvider<T> {

private List<Property<T>> properties = Lists.newArrayList();

public ReflectionProvider(T target) {
public ReflectionProvider(T target, Context context) {
try {
ReflectFactory reflectFactory = CoreRegistry.get(ReflectFactory.class);
CopyStrategyLibrary copyStrategies = CoreRegistry.get(CopyStrategyLibrary.class);
ReflectFactory reflectFactory = context.get(ReflectFactory.class);
CopyStrategyLibrary copyStrategies = context.get(CopyStrategyLibrary.class);
ClassMetadata<T, ?> classMetadata = new DefaultClassMetadata<>(new SimpleUri(), (Class<T>) target.getClass(), reflectFactory, copyStrategies);
for (Field field : getAllFields(target.getClass(), and(withAnnotation(EditorRange.class), or(withType(Float.TYPE), withType(Float.class))))) {
EditorRange range = field.getAnnotation(EditorRange.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@
package org.terasology.editor.properties;

import com.google.common.collect.Lists;
import org.terasology.registry.CoreRegistry;
import org.terasology.context.Context;
import org.terasology.engine.TerasologyEngine;
import org.terasology.engine.modes.GameState;
import org.terasology.engine.modes.StateIngame;
import org.terasology.rendering.backdrop.BackdropProvider;
import org.terasology.rendering.backdrop.BackdropRenderer;
import org.terasology.rendering.opengl.LwjglRenderingProcess;
Expand All @@ -27,20 +30,35 @@
* @author Benjamin Glatzel
*/
public class SceneProperties implements PropertyProvider {

private final TerasologyEngine engine;

public SceneProperties(TerasologyEngine engine) {
this.engine = engine;
}

@Override
public List<Property<?>> getProperties() {
List<Property<?>> result = Lists.newArrayList();
BackdropProvider backdropProvider = CoreRegistry.get(BackdropProvider.class);

GameState gameState = engine.getState();
if (!(gameState instanceof StateIngame)) {
return result;
}
StateIngame ingameState = (StateIngame) gameState;
Context ingameContext = ingameState.getContext();

BackdropProvider backdropProvider = ingameContext.get(BackdropProvider.class);
if (backdropProvider != null) {
result.addAll(new ReflectionProvider(backdropProvider).getProperties());
result.addAll(new ReflectionProvider(backdropProvider, ingameContext).getProperties());
}
BackdropRenderer backdropRenderer = CoreRegistry.get(BackdropRenderer.class);
BackdropRenderer backdropRenderer = ingameContext.get(BackdropRenderer.class);
if (backdropRenderer != null) {
result.addAll(new ReflectionProvider(backdropRenderer).getProperties());
result.addAll(new ReflectionProvider(backdropRenderer, ingameContext).getProperties());
}
LwjglRenderingProcess renderingProcess = CoreRegistry.get(LwjglRenderingProcess.class);
LwjglRenderingProcess renderingProcess = ingameContext.get(LwjglRenderingProcess.class);
if (renderingProcess != null) {
result.addAll(new ReflectionProvider(renderingProcess).getProperties());
result.addAll(new ReflectionProvider(renderingProcess, ingameContext).getProperties());
}
return result;
}
Expand Down
56 changes: 38 additions & 18 deletions engine/src/main/java/org/terasology/editor/ui/MainWindow.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,26 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.terasology.assets.management.AssetManager;
import org.terasology.context.Context;
import org.terasology.editor.TeraEd;
import org.terasology.editor.properties.PropertyProvider;
import org.terasology.editor.properties.ReflectionProvider;
import org.terasology.engine.StateChangeSubscriber;
import org.terasology.registry.CoreRegistry;
import org.terasology.engine.TerasologyEngine;
import org.terasology.engine.modes.GameState;
import org.terasology.engine.modes.StateIngame;
import org.terasology.rendering.assets.material.Material;
import org.terasology.rendering.opengl.GLSLMaterial;

import javax.swing.*;
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.ScrollPaneConstants;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
Expand All @@ -45,6 +55,7 @@ public final class MainWindow extends JFrame implements ActionListener, WindowLi
private static final Logger logger = LoggerFactory.getLogger(MainWindow.class);

private TeraEd teraEd;
private TerasologyEngine engine;

private BorderLayout borderLayout;
private Viewport viewport;
Expand All @@ -65,9 +76,10 @@ public final class MainWindow extends JFrame implements ActionListener, WindowLi

private JScrollPane propertyPanelScrollPane;

public MainWindow(TeraEd teraEd) {
public MainWindow(TeraEd teraEd, TerasologyEngine engine) {
this.teraEd = teraEd;
this.addWindowListener(this);
this.engine = engine;

viewport = new Viewport();

Expand Down Expand Up @@ -123,23 +135,31 @@ public Viewport getViewport() {
public void onStateChange() {
shaderPropertyMenuEntries.clear();
shaderPropertiesMenu.removeAll();
AssetManager assetManager = CoreRegistry.get(AssetManager.class);
for (Material material : assetManager.getLoadedAssets(Material.class)) {
GLSLMaterial finalMat = (GLSLMaterial) material;
if (finalMat.getShaderParameters() != null) {
final PropertyProvider provider = new ReflectionProvider(finalMat.getShaderParameters());
if (!provider.getProperties().isEmpty()) {
final String programName = material.getUrn().toString();
JMenuItem menuItem = new JMenuItem(programName);
menuItem.addActionListener(e -> {
propertyPanel.setActivePropertyProvider(provider);
propertyPanel.setTitle(programName);
});
shaderPropertyMenuEntries.add(menuItem);
shaderPropertiesMenu.add(menuItem);
GameState gameState = engine.getState();
if (gameState instanceof StateIngame) {
StateIngame stateIngame = (StateIngame) gameState;
Context ingameContext = stateIngame.getContext();
AssetManager assetManager = ingameContext.get(AssetManager.class);
for (Material material : assetManager.getLoadedAssets(Material.class)) {
GLSLMaterial finalMat = (GLSLMaterial) material;
if (finalMat.getShaderParameters() != null) {
final PropertyProvider provider = new ReflectionProvider(finalMat.getShaderParameters(),
ingameContext);
if (!provider.getProperties().isEmpty()) {
final String programName = material.getUrn().toString();
JMenuItem menuItem = new JMenuItem(programName);
menuItem.addActionListener(e -> {
propertyPanel.setActivePropertyProvider(provider);
propertyPanel.setTitle(programName);
});
shaderPropertyMenuEntries.add(menuItem);
shaderPropertiesMenu.add(menuItem);
}
}
}
}


}

@Override
Expand Down
Loading