2017-02-24 11:36:17 -08:00
|
|
|
package amidst;
|
2017-02-23 14:56:34 -08:00
|
|
|
|
|
|
|
import amidst.documentation.AmidstThread;
|
|
|
|
import amidst.documentation.CalledOnlyBy;
|
|
|
|
import amidst.documentation.NotThreadSafe;
|
2017-02-23 15:43:45 -08:00
|
|
|
import amidst.fragment.FragmentManager;
|
2017-02-23 14:56:34 -08:00
|
|
|
import amidst.fragment.layer.LayerBuilder;
|
|
|
|
import amidst.gui.license.LicenseWindow;
|
2017-02-23 15:43:45 -08:00
|
|
|
import amidst.gui.main.Actions;
|
2017-02-23 14:56:34 -08:00
|
|
|
import amidst.gui.main.MainWindow;
|
2017-02-24 10:43:13 -08:00
|
|
|
import amidst.gui.main.MainWindowDialogs;
|
2017-02-24 11:36:17 -08:00
|
|
|
import amidst.gui.main.PerMainWindowInjector;
|
2017-02-23 14:56:34 -08:00
|
|
|
import amidst.gui.main.UpdatePrompt;
|
2017-02-23 15:43:45 -08:00
|
|
|
import amidst.gui.main.viewer.BiomeSelection;
|
2017-02-24 11:36:17 -08:00
|
|
|
import amidst.gui.main.viewer.PerViewerFacadeInjector;
|
2017-02-23 15:43:45 -08:00
|
|
|
import amidst.gui.main.viewer.ViewerFacade;
|
|
|
|
import amidst.gui.main.viewer.Zoom;
|
2017-02-23 14:56:34 -08:00
|
|
|
import amidst.gui.profileselect.ProfileSelectWindow;
|
|
|
|
import amidst.mojangapi.MojangApi;
|
|
|
|
import amidst.mojangapi.MojangApiBuilder;
|
|
|
|
import amidst.mojangapi.file.DotMinecraftDirectoryNotFoundException;
|
2017-06-01 11:56:03 -07:00
|
|
|
import amidst.mojangapi.file.PlayerInformationCache;
|
|
|
|
import amidst.mojangapi.file.PlayerInformationProvider;
|
2017-02-23 14:56:34 -08:00
|
|
|
import amidst.mojangapi.minecraftinterface.local.LocalMinecraftInterfaceCreationException;
|
|
|
|
import amidst.mojangapi.world.SeedHistoryLogger;
|
2017-02-23 15:43:45 -08:00
|
|
|
import amidst.mojangapi.world.World;
|
2017-02-23 14:56:34 -08:00
|
|
|
import amidst.mojangapi.world.WorldBuilder;
|
|
|
|
import amidst.settings.biomeprofile.BiomeProfileDirectory;
|
|
|
|
import amidst.threading.ThreadMaster;
|
|
|
|
|
|
|
|
@NotThreadSafe
|
|
|
|
public class PerApplicationInjector {
|
|
|
|
private final AmidstMetaData metadata;
|
|
|
|
private final AmidstSettings settings;
|
2017-06-01 10:07:53 -07:00
|
|
|
private final PlayerInformationProvider playerInformationProvider;
|
2017-02-23 14:56:34 -08:00
|
|
|
private final SeedHistoryLogger seedHistoryLogger;
|
|
|
|
private final WorldBuilder worldBuilder;
|
|
|
|
private final MojangApi mojangApi;
|
|
|
|
private final BiomeProfileDirectory biomeProfileDirectory;
|
|
|
|
private final ThreadMaster threadMaster;
|
|
|
|
private final LayerBuilder layerBuilder;
|
2017-02-23 15:43:45 -08:00
|
|
|
private final Zoom zoom;
|
|
|
|
private final FragmentManager fragmentManager;
|
|
|
|
private final BiomeSelection biomeSelection;
|
2017-02-23 14:56:34 -08:00
|
|
|
private final Application application;
|
|
|
|
|
|
|
|
@CalledOnlyBy(AmidstThread.EDT)
|
|
|
|
public PerApplicationInjector(CommandLineParameters parameters, AmidstMetaData metadata, AmidstSettings settings)
|
|
|
|
throws DotMinecraftDirectoryNotFoundException,
|
|
|
|
LocalMinecraftInterfaceCreationException {
|
|
|
|
this.metadata = metadata;
|
|
|
|
this.settings = settings;
|
2017-06-01 10:07:53 -07:00
|
|
|
this.playerInformationProvider = new PlayerInformationCache();
|
2017-02-23 14:56:34 -08:00
|
|
|
this.seedHistoryLogger = SeedHistoryLogger.from(parameters.seedHistoryFile);
|
2017-06-01 10:07:53 -07:00
|
|
|
this.worldBuilder = new WorldBuilder(playerInformationProvider, seedHistoryLogger);
|
2017-02-23 14:56:34 -08:00
|
|
|
this.mojangApi = new MojangApiBuilder(worldBuilder, parameters).construct();
|
|
|
|
this.biomeProfileDirectory = BiomeProfileDirectory.create(parameters.biomeProfilesDirectory);
|
|
|
|
this.threadMaster = new ThreadMaster();
|
|
|
|
this.layerBuilder = new LayerBuilder();
|
2017-02-23 15:43:45 -08:00
|
|
|
this.zoom = new Zoom(settings.maxZoom);
|
|
|
|
this.fragmentManager = new FragmentManager(layerBuilder.getConstructors(), layerBuilder.getNumberOfLayers());
|
|
|
|
this.biomeSelection = new BiomeSelection();
|
2017-02-23 14:56:34 -08:00
|
|
|
this.application = new Application(
|
|
|
|
mojangApi,
|
|
|
|
this::createNoisyUpdatePrompt,
|
|
|
|
this::createSilentUpdatePrompt,
|
|
|
|
this::createMainWindow,
|
|
|
|
this::createProfileSelectWindow,
|
|
|
|
this::createLicenseWindow);
|
|
|
|
}
|
|
|
|
|
|
|
|
@CalledOnlyBy(AmidstThread.EDT)
|
2017-02-24 10:43:13 -08:00
|
|
|
private UpdatePrompt createNoisyUpdatePrompt(MainWindowDialogs dialogs) {
|
|
|
|
return UpdatePrompt.from(metadata.getVersion(), threadMaster.getWorkerExecutor(), dialogs, false);
|
2017-02-23 14:56:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
@CalledOnlyBy(AmidstThread.EDT)
|
|
|
|
private UpdatePrompt createSilentUpdatePrompt() {
|
|
|
|
return UpdatePrompt.from(metadata.getVersion(), threadMaster.getWorkerExecutor(), null, true);
|
|
|
|
}
|
|
|
|
|
|
|
|
@CalledOnlyBy(AmidstThread.EDT)
|
|
|
|
private MainWindow createMainWindow() {
|
2017-02-24 10:43:13 -08:00
|
|
|
return new PerMainWindowInjector(
|
2017-02-23 14:56:34 -08:00
|
|
|
application,
|
|
|
|
metadata,
|
|
|
|
settings,
|
|
|
|
mojangApi,
|
|
|
|
biomeProfileDirectory,
|
2017-02-23 15:43:45 -08:00
|
|
|
this::createViewerFacade,
|
2017-02-24 10:43:13 -08:00
|
|
|
threadMaster).getMainWindow();
|
2017-02-23 14:56:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
@CalledOnlyBy(AmidstThread.EDT)
|
|
|
|
private ProfileSelectWindow createProfileSelectWindow() {
|
|
|
|
return new ProfileSelectWindow(application, metadata, threadMaster.getWorkerExecutor(), mojangApi, settings);
|
|
|
|
}
|
|
|
|
|
|
|
|
@CalledOnlyBy(AmidstThread.EDT)
|
|
|
|
private LicenseWindow createLicenseWindow() {
|
|
|
|
return new LicenseWindow(metadata);
|
|
|
|
}
|
2017-02-23 15:43:45 -08:00
|
|
|
|
|
|
|
@CalledOnlyBy(AmidstThread.EDT)
|
|
|
|
private ViewerFacade createViewerFacade(World world, Actions actions) {
|
|
|
|
return new PerViewerFacadeInjector(
|
|
|
|
settings,
|
|
|
|
threadMaster.getWorkerExecutor(),
|
|
|
|
zoom,
|
|
|
|
layerBuilder,
|
|
|
|
fragmentManager,
|
|
|
|
biomeSelection,
|
|
|
|
world,
|
|
|
|
actions).getViewerFacade();
|
|
|
|
}
|
|
|
|
|
|
|
|
@CalledOnlyBy(AmidstThread.EDT)
|
|
|
|
public Application getApplication() {
|
|
|
|
return application;
|
|
|
|
}
|
2017-02-23 14:56:34 -08:00
|
|
|
}
|