/*
* SK's Minecraft Launcher
* Copyright (C) 2010-2014 Albert Pham <http://www.sk89q.com> and contributors
* Please see LICENSE.txt for license information.
*/
package com.skcraft.launcher.launch;
import com.skcraft.launcher.Instance;
import com.skcraft.launcher.auth.Session;
import lombok.Data;
import lombok.Getter;
import java.awt.*;
import static com.google.common.base.Preconditions.checkNotNull;
@Data
public class LaunchOptions {
private final Window window;
private final Instance instance;
private final UpdatePolicy updatePolicy;
private final LaunchListener listener;
private final Session session;
@Data
public static class Builder {
private Window window = null;
private Instance instance;
private UpdatePolicy updatePolicy = UpdatePolicy.UPDATE_IF_SESSION_ONLINE;
private LaunchListener listener = new DummyLaunchListener();
private Session session;
public Builder setWindow(Window window) {
this.window = window;
return this;
}
public Builder setInstance(Instance instance) {
this.instance = instance;
return this;
}
public Builder setUpdatePolicy(UpdatePolicy updatePolicy) {
checkNotNull(updatePolicy, "updatePolicy");
this.updatePolicy = updatePolicy;
return this;
}
public Builder setListener(LaunchListener listener) {
checkNotNull(listener, "listener");
this.listener = listener;
return this;
}
public Builder setSession(Session session) {
this.session = session;
return this;
}
public LaunchOptions build() {
checkNotNull(instance, "instance");
return new LaunchOptions(window, instance, updatePolicy, listener, session);
}
}
public enum UpdatePolicy {
NO_UPDATE(false),
UPDATE_IF_SESSION_ONLINE(true),
ALWAYS_UPDATE(true);
@Getter
private final boolean updateEnabled;
UpdatePolicy(boolean updateEnabled) {
this.updateEnabled = updateEnabled;
}
}
private static class DummyLaunchListener implements LaunchListener {
@Override
public void instancesUpdated() {
}
@Override
public void gameStarted() {
}
@Override
public void gameClosed() {
}
}
}