Merge branch 'dev' of github.com:GravitLauncher/Launcher into

dev
This commit is contained in:
Zaxar163 2019-08-16 12:49:58 +03:00
commit 100b0fcda0
27 changed files with 580 additions and 429 deletions

View file

@ -39,7 +39,6 @@
dependencies { dependencies {
pack project(':LauncherAuthlib') pack project(':LauncherAuthlib')
bundle 'com.github.oshi:oshi-core:3.13.0' bundle 'com.github.oshi:oshi-core:3.13.0'
bundle 'de.jensd:fontawesomefx:8.9'
bundle 'org.apache.httpcomponents:httpclient:4.5.7' bundle 'org.apache.httpcomponents:httpclient:4.5.7'
pack 'io.netty:netty-codec-http:4.1.36.Final' pack 'io.netty:netty-codec-http:4.1.36.Final'
pack 'org.ow2.asm:asm-tree:7.1' pack 'org.ow2.asm:asm-tree:7.1'

View file

@ -2,7 +2,7 @@
var config = { var config = {
dir: "GravitLauncher", // Launcher directory dir: "GravitLauncher", // Launcher directory
title: "GravitLauncher", // Window title title: "GravitLauncher", // Window title
icons: [ "favicon.png" ], // Window icon paths icons: ["favicon.png"], // Window icon paths
// Auth config // Auth config
linkText: "GravitLauncher", // Text for link under "Auth" button linkText: "GravitLauncher", // Text for link under "Auth" button

View file

@ -24,9 +24,9 @@ function initLauncher() {
/* ======== init Login window======== */ /* ======== init Login window======== */
function initLoginScene() { function initLoginScene() {
loginPane.setOnMousePressed(function(event){ movePoint = new javafx.geometry.Point2D(event.getSceneX(), event.getSceneY())}); loginPane.setOnMousePressed(function(event) { movePoint = new javafx.geometry.Point2D(event.getSceneX(), event.getSceneY()) });
loginPane.setOnMouseDragged(function(event) { loginPane.setOnMouseDragged(function(event) {
if(movePoint === null) { if (movePoint === null) {
return; return;
} }
stage.setX(event.getScreenX() - movePoint.getX()); stage.setX(event.getScreenX() - movePoint.getX());
@ -35,9 +35,9 @@ function initLoginScene() {
var pane = loginPane.lookup("#bar"); var pane = loginPane.lookup("#bar");
bar = pane; bar = pane;
loginPane.lookup("#close").setOnAction(function(event){ javafx.application.Platform.exit()}); loginPane.lookup("#close").setOnAction(function(event) { javafx.application.Platform.exit() });
loginPane.lookup("#hide").setOnAction(function(event){ stage.setIconified(true)}); loginPane.lookup("#hide").setOnAction(function(event) { stage.setIconified(true) });
loginPane.lookup("#discord").setOnAction(function(){ openURL(config.discord); }); loginPane.lookup("#discord").setOnAction(function() { openURL(config.discord); });
var pane = loginPane.lookup("#authPane"); var pane = loginPane.lookup("#authPane");
authPane = pane; authPane = pane;
@ -46,14 +46,14 @@ function initLoginScene() {
loginPaneLayout = loginLayout; loginPaneLayout = loginLayout;
loginField = pane.lookup("#login"); loginField = pane.lookup("#login");
loginField.setOnMouseMoved(function(event){rootPane.fireEvent(event)}); loginField.setOnMouseMoved(function(event) { rootPane.fireEvent(event) });
loginField.setOnAction(goAuth); loginField.setOnAction(goAuth);
if (settings.login !== null) { if (settings.login !== null) {
loginField.setText(settings.login); loginField.setText(settings.login);
} }
passwordField = pane.lookup("#password"); passwordField = pane.lookup("#password");
passwordField.setOnMouseMoved(function(event){rootPane.fireEvent(event)}); passwordField.setOnMouseMoved(function(event) { rootPane.fireEvent(event) });
passwordField.setOnAction(goAuth); passwordField.setOnAction(goAuth);
if (settings.rsaPassword !== null) { if (settings.rsaPassword !== null) {
passwordField.getStyleClass().add("hasSaved"); passwordField.getStyleClass().add("hasSaved");
@ -74,9 +74,9 @@ function initLoginScene() {
/* ======== init Menu window======== */ /* ======== init Menu window======== */
function initMenuScene() { function initMenuScene() {
menuPane.setOnMousePressed(function(event){ movePoint = new javafx.geometry.Point2D(event.getSceneX(), event.getSceneY())}); menuPane.setOnMousePressed(function(event) { movePoint = new javafx.geometry.Point2D(event.getSceneX(), event.getSceneY()) });
menuPane.setOnMouseDragged(function(event) { menuPane.setOnMouseDragged(function(event) {
if(movePoint === null) { if (movePoint === null) {
return; return;
} }
@ -86,9 +86,9 @@ function initMenuScene() {
var pane = menuPane.lookup("#bar"); var pane = menuPane.lookup("#bar");
bar = pane; bar = pane;
pane.lookup("#close").setOnAction(function(event){ javafx.application.Platform.exit()}); pane.lookup("#close").setOnAction(function(event) { javafx.application.Platform.exit() });
pane.lookup("#hide").setOnAction(function(event){ stage.setIconified(true)}); pane.lookup("#hide").setOnAction(function(event) { stage.setIconified(true) });
pane.lookup("#discord").setOnAction(function(){ openURL(config.discord); }); pane.lookup("#discord").setOnAction(function() { openURL(config.discord); });
pane.lookup("#settings").setOnAction(goSettings); pane.lookup("#settings").setOnAction(goSettings);
pane.lookup("#goConsole").setOnAction(goConsole); pane.lookup("#goConsole").setOnAction(goConsole);
@ -105,10 +105,10 @@ function initMenuScene() {
serverEntrance = pane.lookup("#serverentrance"); serverEntrance = pane.lookup("#serverentrance");
serverStatus = serverEntrance.lookup("#serverStatus"); serverStatus = serverEntrance.lookup("#serverStatus");
serverLabel = serverEntrance.lookup("#serverLabel"); serverLabel = serverEntrance.lookup("#serverLabel");
serverEntrance.lookup("#clientLaunch").setOnAction(function(){ serverEntrance.lookup("#clientLaunch").setOnAction(function() {
doUpdate(profilesList[serverHolder.old], loginData.pp, loginData.accessToken); doUpdate(profilesList[serverHolder.old], loginData.pp, loginData.accessToken);
}); });
pane.lookup("#logout").setOnAction(function(){ pane.lookup("#logout").setOnAction(function() {
setCurrentScene(loginScene); setCurrentScene(loginScene);
}); });
@ -116,9 +116,9 @@ function initMenuScene() {
/* ======== init Console window======== */ /* ======== init Console window======== */
function initConsoleScene() { function initConsoleScene() {
consoleMenu.setOnMousePressed(function(event){ movePoint = new javafx.geometry.Point2D(event.getSceneX(), event.getSceneY())}); consoleMenu.setOnMousePressed(function(event) { movePoint = new javafx.geometry.Point2D(event.getSceneX(), event.getSceneY()) });
consoleMenu.setOnMouseDragged(function(event) { consoleMenu.setOnMouseDragged(function(event) {
if(movePoint === null) { if (movePoint === null) {
return; return;
} }
@ -128,13 +128,13 @@ function initConsoleScene() {
var pane = consoleMenu.lookup("#bar"); var pane = consoleMenu.lookup("#bar");
consoleBar = pane; consoleBar = pane;
pane.lookup("#close").setOnAction(function(){ pane.lookup("#close").setOnAction(function() {
consoleStage.hide(); consoleStage.hide();
}); });
var text = consoleMenu.lookup("#textField"); var text = consoleMenu.lookup("#textField");
var output = consoleMenu.lookup("#output"); var output = consoleMenu.lookup("#output");
var appendFunction = function(line) javafx.application.Platform.runLater(function() output.appendText(line)); var appendFunction = function(line) javafx.application.Platform.runLater(function() output.appendText(line));
consoleMenu.lookup("#send").setOnAction(function(){ consoleMenu.lookup("#send").setOnAction(function() {
execCommand(text.getText()); execCommand(text.getText());
if (text.getText() == "clear") { if (text.getText() == "clear") {
output.setText(""); output.setText("");
@ -142,7 +142,7 @@ function initConsoleScene() {
text.setText(""); text.setText("");
}); });
FunctionalBridge.addPlainOutput(function(string) { FunctionalBridge.addPlainOutput(function(string) {
appendFunction(string+"\n"); appendFunction(string + "\n");
}) })
pane.lookup("#hide").setOnAction(function(event) { consoleStage.setIconified(true) }); pane.lookup("#hide").setOnAction(function(event) { consoleStage.setIconified(true) });
@ -153,9 +153,9 @@ function initConsoleScene() {
/* ======== init Options window======== */ /* ======== init Options window======== */
function initOptionsScene() { function initOptionsScene() {
optionsMenu.setOnMousePressed(function(event){ movePoint = new javafx.geometry.Point2D(event.getSceneX(), event.getSceneY())}); optionsMenu.setOnMousePressed(function(event) { movePoint = new javafx.geometry.Point2D(event.getSceneX(), event.getSceneY()) });
optionsMenu.setOnMouseDragged(function(event) { optionsMenu.setOnMouseDragged(function(event) {
if(movePoint === null) { if (movePoint === null) {
return; return;
} }
@ -165,9 +165,9 @@ function initOptionsScene() {
var pane = optionsMenu.lookup("#bar"); var pane = optionsMenu.lookup("#bar");
bar = pane; bar = pane;
pane.lookup("#close").setOnAction(function(event){ javafx.application.Platform.exit()}); pane.lookup("#close").setOnAction(function(event) { javafx.application.Platform.exit() });
pane.lookup("#hide").setOnAction(function(event){ stage.setIconified(true)}); pane.lookup("#hide").setOnAction(function(event) { stage.setIconified(true) });
pane.lookup("#back").setOnAction(function(){ pane.lookup("#back").setOnAction(function() {
setCurrentScene(menuScene); setCurrentScene(menuScene);
}); });
} }
@ -222,9 +222,9 @@ function goAuth(event) {
settings.login = login; settings.login = login;
doAuth(login, rsaPassword, authTypes[auth]); doAuth(login, rsaPassword, authTypes[auth]);
} }
/* ======== Console ======== */ /* ======== Console ======== */
function goConsole(event) { function goConsole(event) {
setConsoleCurrentScene(consoleScene); setConsoleCurrentScene(consoleScene);
} }
@ -267,7 +267,7 @@ function verifyLauncher(e) {
authOptions.getSelectionModel().select(0); authOptions.getSelectionModel().select(0);
var sm = authOptions.getSelectionModel().selectedIndexProperty(); var sm = authOptions.getSelectionModel().selectedIndexProperty();
sm.addListener(new javafx.beans.value.ChangeListener({ sm.addListener(new javafx.beans.value.ChangeListener({
changed: function (observableValue, oldSelection, newSelection) { changed: function(observableValue, oldSelection, newSelection) {
settings.auth = authTypes[authOptions.getSelectionModel().getSelectedItem()]; settings.auth = authTypes[authOptions.getSelectionModel().getSelectedItem()];
} }
})); }));
@ -287,14 +287,18 @@ function verifyLauncher(e) {
function doAuth(login, rsaPassword, auth_type) { function doAuth(login, rsaPassword, auth_type) {
processing.resetOverlay(); processing.resetOverlay();
overlay.show(processing.overlay, function (event) { overlay.show(processing.overlay, function(event) {
FunctionalBridge.getHWID.join(); FunctionalBridge.getHWID.join();
makeAuthRequest(login, rsaPassword, auth_type, function (result) { makeAuthRequest(login, rsaPassword, auth_type, function(result) {
FunctionalBridge.setAuthParams(result); FunctionalBridge.setAuthParams(result);
loginData = { pp: result.playerProfile , accessToken: result.accessToken, permissions: result.permissions, loginData = {
auth_type: settings.auth}; pp: result.playerProfile,
accessToken: result.accessToken,
permissions: result.permissions,
auth_type: settings.auth
};
overlay.hide(0, function () { overlay.hide(0, function() {
setCurrentScene(menuScene); setCurrentScene(menuScene);
}); });
return result; return result;
@ -355,10 +359,8 @@ function doUpdate(profile, pp, accessToken) {
function doLaunchClient(assetDir, assetHDir, clientDir, clientHDir, profile, pp, accessToken) { function doLaunchClient(assetDir, assetHDir, clientDir, clientHDir, profile, pp, accessToken) {
processing.resetOverlay(); processing.resetOverlay();
overlay.swap(0, processing.overlay, function(event) overlay.swap(0, processing.overlay, function(event) launchClient(assetHDir, clientHDir, profile, new ClientLauncherParams(settings.lastDigest,
launchClient(assetHDir, clientHDir, profile, new ClientLauncherParams(settings.lastDigest, assetDir, clientDir, pp, accessToken, settings.autoEnter, settings.fullScreen, settings.ram, 0, 0), doDebugClient));
assetDir, clientDir, pp, accessToken, settings.autoEnter, settings.fullScreen, settings.ram, 0, 0), doDebugClient)
);
} }
function doDebugClient(process) { function doDebugClient(process) {
@ -398,10 +400,10 @@ function updateProfilesList(profiles) {
if (profile.getOptional() != null) profile.updateOptionalGraph(); if (profile.getOptional() != null) profile.updateOptionalGraph();
index++; index++;
}); });
LogHelper.debug("Load selected %d profile",settings.profile); LogHelper.debug("Load selected %d profile", settings.profile);
if(profiles.length > 0) { if (profiles.length > 0) {
if(settings.profile >= profiles.length) if (settings.profile >= profiles.length)
settings.profile = profiles.length-1; settings.profile = profiles.length - 1;
serverHolder.set(serverList.getChildren().get(settings.profile)); serverHolder.set(serverList.getChildren().get(settings.profile));
} }
} }
@ -412,11 +414,11 @@ function pingServer(btn) {
var task = newTask(function() pingers[profile].ping()); var task = newTask(function() pingers[profile].ping());
task.setOnSucceeded(function(event) { task.setOnSucceeded(function(event) {
var result = task.getValue(); var result = task.getValue();
if(btn==serverHolder.old){ if (btn == serverHolder.old) {
setServerStatus(java.lang.String.format("%d из %d", result.onlinePlayers, result.maxPlayers)); setServerStatus(java.lang.String.format("%d из %d", result.onlinePlayers, result.maxPlayers));
} }
}); });
task.setOnFailed(function(event){ if(btn==serverHolder.old){setServerStatus("Недоступен")}}); task.setOnFailed(function(event) { if (btn == serverHolder.old) { setServerStatus("Недоступен") } });
startTask(task); startTask(task);
} }
@ -482,7 +484,7 @@ var overlay = {
fade(overlay.current, delay, 1.0, 0.0, function(event) { fade(overlay.current, delay, 1.0, 0.0, function(event) {
dimPane.requestFocus(); dimPane.requestFocus();
if(overlay.current==null){ if (overlay.current == null) {
overlay.show(newOverlay, onFinished); overlay.show(newOverlay, onFinished);
return; return;
} }
@ -504,13 +506,13 @@ var overlay = {
var serverHolder = { var serverHolder = {
old: null, old: null,
set: function(btn){ set: function(btn) {
pingServer(btn); pingServer(btn);
serverLabel.setText(profilesList[btn]); serverLabel.setText(profilesList[btn]);
serverDescription.setText(profilesList[btn].info); serverDescription.setText(profilesList[btn].info);
btn.setSelected(true); btn.setSelected(true);
btn.setDisable(true); btn.setDisable(true);
if(serverHolder.old!=null){ if (serverHolder.old != null) {
serverHolder.old.setSelected(false); serverHolder.old.setSelected(false);
serverHolder.old.setDisable(false); serverHolder.old.setDisable(false);
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -4,23 +4,23 @@ Button {
} }
/* Outputs */ /* Outputs */
#overlay > #output, #overlay>#output,
#background > #output { #background>#output {
-fx-background-color: white; -fx-background-color: white;
-fx-background-radius: 0; -fx-background-radius: 0;
-fx-font-family: monospace; -fx-font-family: monospace;
-fx-font-size: 8pt; -fx-font-size: 8pt;
} }
#overlay > #output .content, #overlay>#output .content,
#background > #output .content { #background>#output .content {
-fx-background-color: white; -fx-background-color: white;
-fx-background-radius: 0; -fx-background-radius: 0;
} }
/* Close button */ /* Close button */
#overlay > #copy, #overlay>#copy,
#overlay > #action.close { #overlay>#action.close {
-fx-background-radius: 0; -fx-background-radius: 0;
-fx-text-fill: white; -fx-text-fill: white;
-fx-background-position: center; -fx-background-position: center;
@ -29,17 +29,17 @@ #overlay > #action.close {
-fx-pref-height: 25px; -fx-pref-height: 25px;
} }
#overlay > #copy:hover, #overlay>#copy:hover,
#overlay > #copy:focused, #overlay>#copy:focused,
#overlay > #action.close:hover, #overlay>#action.close:hover,
#overlay > #action.close:focused, #overlay>#action.close:focused,
#overlay > #copy:pressed, #overlay>#copy:pressed,
#overlay > #action.close:pressed { #overlay>#action.close:pressed {
-fx-background-color: #1568ce; -fx-background-color: #1568ce;
} }
/* Kill button */ /* Kill button */
#overlay > #action.kill { #overlay>#action.kill {
-fx-background-radius: 0; -fx-background-radius: 0;
-fx-text-fill: white; -fx-text-fill: white;
-fx-background-position: center; -fx-background-position: center;
@ -48,9 +48,10 @@ #overlay > #action.kill {
-fx-pref-height: 25px; -fx-pref-height: 25px;
} }
#overlay > #action.kill:hover, #overlay>#action.kill:hover,
#overlay > #action.kill:focused, #overlay>#action.kill:focused,
#overlay > #action.kill:pressed { #overlay>#action.kill:pressed {
-fx-background-color: #DB5252; -fx-background-color: #DB5252;
} }
/*-- DrLeonardo Design --*/ /*-- DrLeonardo Design --*/

View file

@ -1,5 +1,8 @@
var debug = { var debug = {
overlay: null, output: null, action: null, process: null, overlay: null,
output: null,
action: null,
process: null,
initOverlay: function() { initOverlay: function() {
debug.overlay = loadFXML("dialog/overlay/debug/debug.fxml"); debug.overlay = loadFXML("dialog/overlay/debug/debug.fxml");
@ -47,8 +50,7 @@ var debug = {
append: function(text) { append: function(text) {
//Experimental Feature //Experimental Feature
if(debug.output.getText().length() > 32000 /* Max length */) if (debug.output.getText().length() > 32000 /* Max length */ ) {
{
debug.output.deleteText(0, text.length()); debug.output.deleteText(0, text.length());
} }
debug.output.appendText(text); debug.output.appendText(text);

View file

@ -1,11 +1,12 @@
/*-- DrLeonardo Design --*/ /*-- DrLeonardo Design --*/
#overlay > #description { #overlay>#description {
-fx-font-size: 12pt; -fx-font-size: 12pt;
-fx-text-fill: #fff; -fx-text-fill: #fff;
-fx-wrap-text: true; -fx-wrap-text: true;
} }
#overlay > #description.error { #overlay>#description.error {
-fx-text-fill: red; -fx-text-fill: red;
} }
/*-- DrLeonardo Design --*/ /*-- DrLeonardo Design --*/

View file

@ -1,6 +1,9 @@
var processing = { var processing = {
overlay: null, spinner: null, description: null, overlay: null,
processingImage: null, errorImage: null, spinner: null,
description: null,
processingImage: null,
errorImage: null,
initOverlay: function() { initOverlay: function() {
processing.overlay = loadFXML("dialog/overlay/processing/processing.fxml"); processing.overlay = loadFXML("dialog/overlay/processing/processing.fxml");
@ -69,6 +72,7 @@ function makeLauncherRequest(callback) {
task.updateMessage("Обновление лаунчера"); task.updateMessage("Обновление лаунчера");
startTask(task); startTask(task);
} }
function makeProfilesRequest(callback) { function makeProfilesRequest(callback) {
var task = newRequestTask(new ProfilesRequest()); var task = newRequestTask(new ProfilesRequest());
@ -83,6 +87,7 @@ function makeProfilesRequest(callback) {
task.updateMessage("Обновление профилей"); task.updateMessage("Обновление профилей");
startTask(task); startTask(task);
} }
function makeAuthAvailabilityRequest(callback) { function makeAuthAvailabilityRequest(callback) {
var task = newRequestTask(new GetAvailabilityAuthRequest()); var task = newRequestTask(new GetAvailabilityAuthRequest());
@ -98,6 +103,7 @@ function makeAuthAvailabilityRequest(callback) {
task.updateMessage("Обновление способов авторизации"); task.updateMessage("Обновление способов авторизации");
startTask(task); startTask(task);
} }
function makeSetProfileRequest(profile, callback) { function makeSetProfileRequest(profile, callback) {
var task = newRequestTask(new SetProfileRequest(profile)); var task = newRequestTask(new SetProfileRequest(profile));

View file

@ -1,14 +1,19 @@
/*-- DrLeonardo Design --*/ /*-- DrLeonardo Design --*/
#holder { #holder {
-fx-background-color: #fff; -fx-background-color: #fff;
} }
#holder > #transferDialog {
#holder>#transferDialog {
-fx-background-color: rgba(0, 0, 0, 0.5); -fx-background-color: rgba(0, 0, 0, 0.5);
-fx-pref-width: 694px; -fx-pref-width: 694px;
-fx-pref-height: 425px; -fx-pref-height: 425px;
} }
/* Labels */ /* Labels */
#holder > #settingsTitle {
#holder>#settingsTitle {
-fx-font-size: 14pt; -fx-font-size: 14pt;
-fx-alignment: baseline-center; -fx-alignment: baseline-center;
} }
@ -19,30 +24,35 @@ #holder #dirChange {
-fx-font-weight: bold; -fx-font-weight: bold;
} }
/* RAM slider */ /* RAM slider */
#holder > #ramSlider > .track {
#holder>#ramSlider>.track {
-fx-background-color: #909090; -fx-background-color: #909090;
} }
#holder > #ramSlider > .thumb { #holder>#ramSlider>.thumb {
-fx-background-color: #5fd97a; -fx-background-color: #5fd97a;
} }
#holder > #ramSlider > .colored-track { #holder>#ramSlider>.colored-track {
-fx-background-color: #5fd97a; -fx-background-color: #5fd97a;
} }
#holder > #ramSlider > .animated-thumb { #holder>#ramSlider>.animated-thumb {
-fx-background-color: #5fd97a; -fx-background-color: #5fd97a;
} }
#holder > #ramSlider > .slider-value { #holder>#ramSlider>.slider-value {
-fx-fill: white; -fx-fill: white;
-fx-stroke: white; -fx-stroke: white;
} }
/* Dir options */ /* Dir options */
#holder > #deleteDir, #cancelTransfer {
#holder>#deleteDir,
#cancelTransfer {
-fx-background-radius: 0; -fx-background-radius: 0;
-fx-text-fill: white; -fx-text-fill: white;
-fx-background-position: center; -fx-background-position: center;
@ -51,23 +61,26 @@ #holder > #deleteDir, #cancelTransfer {
-fx-pref-height: 25px; -fx-pref-height: 25px;
} }
#holder > #deleteDir:hover,#cancelTransfer:hover, #holder>#deleteDir:hover,
#holder > #deleteDir:focused,#cancelTransfer:focused { #cancelTransfer:hover,
#holder>#deleteDir:focused,
#cancelTransfer:focused {
-fx-background-color: #DB5252; -fx-background-color: #DB5252;
} }
#holder > #changeDir { #holder>#changeDir {
-fx-background-color: transparent; -fx-background-color: transparent;
-fx-text-fill: #909090; -fx-text-fill: #909090;
-fx-background-radius: 0; -fx-background-radius: 0;
} }
#holder > #changeDir:focused, #holder>#changeDir:focused,
#holder > #changeDir:pressed { #holder>#changeDir:pressed {
-fx-font-weight: bold; -fx-font-weight: bold;
} }
#holder > #apply,#applyTransfer{ #holder>#apply,
#applyTransfer {
-fx-background-color: #5fd97a; -fx-background-color: #5fd97a;
-fx-background-radius: 0; -fx-background-radius: 0;
-fx-text-fill: white; -fx-text-fill: white;
@ -75,8 +88,13 @@ #holder > #apply,#applyTransfer{
-fx-pref-width: 150px; -fx-pref-width: 150px;
-fx-pref-height: 25px; -fx-pref-height: 25px;
} }
#holder > #apply:hover,#applyTransfer:hover,
#holder > #apply:focused,#applyTransfer:focused{ #holder>#apply:hover,
#applyTransfer:hover,
#holder>#apply:focused,
#applyTransfer:focused {
-fx-background-color: #75e18c; -fx-background-color: #75e18c;
} }
/*-- DrLeonardo Design --*/ /*-- DrLeonardo Design --*/

View file

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import java.net.URL?>
<?import javafx.scene.control.Button?> <?import javafx.scene.control.Button?>
<?import javafx.scene.control.CheckBox?> <?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.Slider?>
<?import java.net.URL?>
<?import javafx.scene.control.Hyperlink?> <?import javafx.scene.control.Hyperlink?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Slider?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.shape.Line?> <?import javafx.scene.shape.Line?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
@ -13,16 +14,22 @@
<!-- DrLeonardo Design --> <!-- DrLeonardo Design -->
<Pane fx:id="overlay" prefHeight="450.0" prefWidth="693.0" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1"> <Pane fx:id="overlay" prefHeight="450.0" prefWidth="693.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<Pane id="holder" prefHeight="450.0" prefWidth="694.0"> <Pane id="holder" prefHeight="450.0" prefWidth="694.0">
<children> <children>
<CheckBox fx:id="autoEnter" layoutX="14.0" layoutY="137.0" text="Автовход на сервер" /> <CheckBox fx:id="autoEnter" layoutX="28.0" layoutY="169.0" text="Автовход на сервер">
<Text fill="#8c8c8c" layoutX="40.0" layoutY="153.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Включение авто-входа означает что вы сразу после загрузки клиента попадете на сервер" wrappingWidth="636.9999872148037" y="15.0" /> <font>
<CheckBox fx:id="fullScreen" layoutX="13.0" layoutY="244.0" text="Клиент в полный экран" /> <Font size="13.0" />
<Text fill="#8c8c8c" layoutX="40.0" layoutY="261.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Включение данной функции позволяет запустить игру сразу в полноэкранном режиме" wrappingWidth="636.9999872148037" y="15.0" /> </font></CheckBox>
<CheckBox id="debug" layoutX="13.0" layoutY="183.0" text="Режим Отладки" /> <CheckBox fx:id="fullScreen" layoutX="28.0" layoutY="229.0" text="Клиент в полный экран">
<Text fill="#8c8c8c" layoutX="40.0" layoutY="198.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Режим отладки позволяет просмотреть лог запуска и работы программы в реальном времени прямо из лаунчера, что упрощает поиск нужной информации" wrappingWidth="637.0000016447157" y="15.0" /> <font>
<Font size="13.0" />
</font></CheckBox>
<CheckBox id="debug" layoutX="28.0" layoutY="199.0" text="Режим Отладки">
<font>
<Font size="13.0" />
</font></CheckBox>
<TextFlow layoutX="126.0" layoutY="15.0" prefHeight="16.0" prefWidth="112.0"> <TextFlow layoutX="126.0" layoutY="15.0" prefHeight="16.0" prefWidth="112.0">
<Text fx:id="ramLabel" /> <Text fx:id="ramLabel" />
</TextFlow> </TextFlow>
@ -44,8 +51,20 @@
</children> </children>
</Pane> </Pane>
<Line endX="594.0" layoutX="100.0" layoutY="420.0" startX="-100.0" stroke="#5b3636" styleClass="lineHead" /> <Line endX="594.0" layoutX="100.0" layoutY="420.0" startX="-100.0" stroke="#5b3636" styleClass="lineHead" />
<CheckBox fx:id="featureStore" layoutX="13.0" layoutY="292.0" text="Поиск файлов в других клиентах" /> <CheckBox fx:id="featureStore" layoutX="28.0" layoutY="259.0" text="Поиск файлов в других клиентах">
<Text fill="#8c8c8c" layoutX="40.0" layoutY="309.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Используется для экономии вашего трафика, аналогичные файлы будут скопированы с других игровых клиентов" wrappingWidth="636.9999872148037" y="15.0" /> <font>
<Font size="13.0" />
</font></CheckBox>
<Text fx:id="description" layoutX="317.0" layoutY="208.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Режим отладки позволяет просмотреть лог запуска и работы программы в реальном времени прямо из лаунчера, что упрощает поиск нужной информации" wrappingWidth="260.888671875">
<font>
<Font size="13.0" />
</font>
</Text>
<Label fx:id="descLabel" layoutX="317.0" layoutY="169.0" text="Режим отладки">
<font>
<Font name="System Bold" size="14.0" />
</font>
</Label>
</children> </children>
</Pane> </Pane>
</children> </children>

View file

@ -1,7 +1,13 @@
var settingsOverlay = { var settingsOverlay = {
/* ===================== OVERLAY ===================== */ /* ===================== OVERLAY ===================== */
overlay: null, ramLabel: null, dirLabel: null, transferDialog: null, overlay: null,
deleteDirPressedAgain: false, count: 0, ramLabel: null,
dirLabel: null,
transferDialog: null,
deleteDirPressedAgain: false,
count: 0,
descLabel: null,
description: null,
initOverlay: function() { initOverlay: function() {
settingsOverlay.overlay = loadFXML("dialog/overlay/settings/settings.fxml"); settingsOverlay.overlay = loadFXML("dialog/overlay/settings/settings.fxml");
@ -12,10 +18,12 @@ var settingsOverlay = {
autoEnterBox.setSelected(settings.autoEnter); autoEnterBox.setSelected(settings.autoEnter);
autoEnterBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"]( autoEnterBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"](
function(o, ov, nv) settings.autoEnter = nv); function(o, ov, nv) settings.autoEnter = nv);
autoEnterBox.setOnMouseEntered(function() {
settingsOverlay.updateDesc(autoEnterBox.getText(), "Включение авто-входа означает что вы сразу после загрузки клиента попадете на сервер");
});
settingsOverlay.dirLabel = holder.lookup("#dirLabel"); settingsOverlay.dirLabel = holder.lookup("#dirLabel");
settingsOverlay.dirLabel.setOnAction(function(event) settingsOverlay.dirLabel.setOnAction(function(event) app.getHostServices().showDocument(settings.updatesDir.toUri()));
app.getHostServices().showDocument(settings.updatesDir.toUri()));
settingsOverlay.updateDirLabel(); settingsOverlay.updateDirLabel();
settingsOverlay.transferDialog = holder.lookup("#transferDialog"); settingsOverlay.transferDialog = holder.lookup("#transferDialog");
@ -33,15 +41,24 @@ var settingsOverlay = {
} }
}); });
this.descLabel = holder.lookup("#descLabel");
this.description = holder.lookup("#description");
var featureStore = holder.lookup("#featureStore"); var featureStore = holder.lookup("#featureStore");
featureStore.setSelected(settings.featureStore); featureStore.setSelected(settings.featureStore);
featureStore.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"]( featureStore.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"](
function(o, ov, nv) settings.featureStore = nv); function(o, ov, nv) settings.featureStore = nv);
featureStore.setOnMouseEntered(function() {
settingsOverlay.updateDesc(featureStore.getText(), "Используется для экономии вашего трафика, аналогичные файлы будут скопированы с других игровых клиентов");
});
var fullScreenBox = holder.lookup("#fullScreen"); var fullScreenBox = holder.lookup("#fullScreen");
fullScreenBox.setSelected(settings.fullScreen); fullScreenBox.setSelected(settings.fullScreen);
fullScreenBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"]( fullScreenBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"](
function(o, ov, nv) settings.fullScreen = nv); function(o, ov, nv) settings.fullScreen = nv);
fullScreenBox.setOnMouseEntered(function() {
settingsOverlay.updateDesc(fullScreenBox.getText(), "Включение данной функции позволяет запустить игру сразу в полноэкранном режиме");
});
settingsOverlay.ramLabel = holder.lookup("#ramLabel"); settingsOverlay.ramLabel = holder.lookup("#ramLabel");
settingsOverlay.updateRAMLabel(); settingsOverlay.updateRAMLabel();
@ -70,16 +87,16 @@ var settingsOverlay = {
settingsOverlay.deleteUpdatesDir(); settingsOverlay.deleteUpdatesDir();
settingsOverlay.deleteDirPressedAgain = false; settingsOverlay.deleteDirPressedAgain = false;
settingsOverlay.count = settingsOverlay.count+1; settingsOverlay.count = settingsOverlay.count + 1;
if(settingsOverlay.count>9){ if (settingsOverlay.count > 9) {
javafx.application.Platform.exit(); javafx.application.Platform.exit();
} }
deleteDirButton.setText( deleteDirButton.setText(
settingsOverlay.count>8?"Прощай :(": settingsOverlay.count > 8 ? "Прощай :(" :
(settingsOverlay.count>7?"Я умираю!": (settingsOverlay.count > 7 ? "Я умираю!" :
(settingsOverlay.count>5?"DeathCry, спаси!": (settingsOverlay.count > 5 ? "DeathCry, спаси!" :
(settingsOverlay.count>4?"Умоляю, перестань!": (settingsOverlay.count > 4 ? "Умоляю, перестань!" :
(settingsOverlay.count>3?"Да хорош уже!":"Ещё раз") (settingsOverlay.count > 3 ? "Да хорош уже!" : "Ещё раз")
)))); ))));
}); });
@ -87,14 +104,25 @@ var settingsOverlay = {
debugBox.setSelected(settings.debug); debugBox.setSelected(settings.debug);
debugBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"]( debugBox.selectedProperty()["addListener(javafx.beans.value.ChangeListener)"](
function(o, ov, nv) settings.debug = nv); function(o, ov, nv) settings.debug = nv);
debugBox.setOnMouseEntered(function() {
settingsOverlay.updateDesc(debugBox.getText(), "Режим отладки позволяет просмотреть лог запуска и работы программы в реальном времени прямо из лаунчера, что упрощает поиск нужной информации");
});
holder.lookup("#apply").setOnAction(function(event) overlay.hide(0, null)); holder.lookup("#apply").setOnAction(function(event) overlay.hide(0, null));
}, },
updateDesc: function(label, desc) {
//На случай если человек решил избавится от этой фишки
if (this.descLabel == null) return;
if (this.description == null) return;
this.descLabel.setText(label);
this.description.setText(desc);
},
transferCatalogDialog: function(newDir) { transferCatalogDialog: function(newDir) {
settingsOverlay.transferDialog.setVisible(true); settingsOverlay.transferDialog.setVisible(true);
settingsOverlay.transferDialog.lookup("#cancelTransfer").setOnAction(function(event) settingsOverlay.transferDialog.lookup("#cancelTransfer").setOnAction(function(event) {
{
settings.updatesDir = newDir; settings.updatesDir = newDir;
DirBridge.dirUpdates = settings.updatesDir; DirBridge.dirUpdates = settings.updatesDir;
settingsOverlay.updateDirLabel(); settingsOverlay.updateDirLabel();
@ -133,9 +161,9 @@ var settingsOverlay = {
setRAM: function(ram) { setRAM: function(ram) {
if (ram>762&&ram<1024){ if (ram > 762 && ram < 1024) {
settings.ram = java.lang.Math["min(int,int)"](ram, FunctionalBridge.getJVMTotalMemory()); settings.ram = java.lang.Math["min(int,int)"](ram, FunctionalBridge.getJVMTotalMemory());
}else{ } else {
settings.ram = java.lang.Math["min(int,int)"](((ram / 256) | 0) * 256, FunctionalBridge.getJVMTotalMemory()); settings.ram = java.lang.Math["min(int,int)"](((ram / 256) | 0) * 256, FunctionalBridge.getJVMTotalMemory());
} }
}, },
@ -148,9 +176,16 @@ LogHelper.debug("Dir: %s", DirBridge.dir);
/* ====================== CLI PARAMS ===================== */ /* ====================== CLI PARAMS ===================== */
var cliParams = { var cliParams = {
login: null, password: null, profile: -1, autoLogin: false, login: null,
updatesDir: null, autoEnter: null, fullScreen: null, ram: -1, password: null,
offline: false, featureStore: null, profile: -1,
autoLogin: false,
updatesDir: null,
autoEnter: null,
fullScreen: null,
ram: -1,
offline: false,
featureStore: null,
init: function(params) { init: function(params) {
var named = params.getNamed(); var named = params.getNamed();
@ -200,8 +235,7 @@ var cliParams = {
if (cliParams.profile >= 0) { if (cliParams.profile >= 0) {
settings.profile = cliParams.profile; settings.profile = cliParams.profile;
} }
if (cliParams.updatesDir !== null) { if (cliParams.updatesDir !== null) {}
}
if (cliParams.autoEnter !== null) { if (cliParams.autoEnter !== null) {
settings.autoLogin = cliParams.autoEnter; settings.autoLogin = cliParams.autoEnter;
} }

View file

@ -6,16 +6,16 @@ #overlay {
-fx-background-image: url('../../images/downloader/blured.jpg'); -fx-background-image: url('../../images/downloader/blured.jpg');
} }
#overlay > #utitle { #overlay>#utitle {
-fx-alignment: top-left; -fx-alignment: top-left;
} }
#overlay > #description { #overlay>#description {
-fx-alignment: top-left; -fx-alignment: top-left;
-fx-wrap-text: true; -fx-wrap-text: true;
} }
#overlay > #description.error { #overlay>#description.error {
-fx-text-fill: #CE5757; -fx-text-fill: #CE5757;
} }
@ -29,15 +29,15 @@ .progress-bar {
-fx-background-color: transparent; -fx-background-color: transparent;
} }
.progress-indicator{ .progress-indicator {
-fx-background-color: transparent ; -fx-background-color: transparent;
} }
.progress-indicator .indicator { .progress-indicator .indicator {
-fx-background-color: transparent ; -fx-background-color: transparent;
} }
.progress-bar > .bar { .progress-bar>.bar {
-fx-background-image: url("../../images/downloader/line.png"); -fx-background-image: url("../../images/downloader/line.png");
-fx-background-color: transparent; -fx-background-color: transparent;
-fx-background-insets: 0; -fx-background-insets: 0;
@ -45,9 +45,10 @@ .progress-bar > .bar {
-fx-padding: 0; -fx-padding: 0;
} }
.progress-bar > .track { .progress-bar>.track {
-fx-background-color: transparent; -fx-background-color: transparent;
-fx-background-insets: 0; -fx-background-insets: 0;
-fx-background-radius: 3px; -fx-background-radius: 3px;
} }
/*-- DrLeonardo Design --*/ /*-- DrLeonardo Design --*/

View file

@ -1,5 +1,8 @@
var update = { var update = {
overlay: null, title: null, description: null, progress: null, overlay: null,
title: null,
description: null,
progress: null,
initOverlay: function() { initOverlay: function() {
update.overlay = loadFXML("dialog/overlay/update/update.fxml"); update.overlay = loadFXML("dialog/overlay/update/update.fxml");
@ -83,7 +86,7 @@ function offlineUpdateRequest(dirName, dir, matcher, digest) {
/* Export functions */ /* Export functions */
function makeUpdateRequest(dirName, dir, matcher, digest, callback) { function makeUpdateRequest(dirName, dir, matcher, digest, callback) {
var request = settings.offline ? { setStateCallback: function(stateCallback) { } } : var request = settings.offline ? { setStateCallback: function(stateCallback) {} } :
new UpdateRequest(dirName, dir, matcher, digest); new UpdateRequest(dirName, dir, matcher, digest);
var task = settings.offline ? newTask(offlineUpdateRequest(dirName, dir, matcher, digest)) : var task = settings.offline ? newTask(offlineUpdateRequest(dirName, dir, matcher, digest)) :
newRequestTask(request); newRequestTask(request);

View file

@ -1,54 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import java.net.URL?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?> <?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextArea?> <?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?> <?import javafx.scene.control.TextField?>
<?import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIconView?> <?import javafx.scene.image.Image?>
<?import java.net.URL?> <?import javafx.scene.image.ImageView?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.shape.Line?> <?import javafx.scene.shape.Line?>
<!-- DrLeonardo Design --> <!-- DrLeonardo Design -->
<Pane fx:id="background" prefWidth="738.0" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1"> <Pane fx:id="background" prefWidth="738.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<Pane fx:id="bar" layoutX="692.0" prefHeight="425.0" prefWidth="43.0" styleClass="bar"> <Pane fx:id="bar" layoutX="692.0" prefHeight="425.0" prefWidth="43.0" styleClass="bar">
<children> <children>
<Button id="hide" alignment="CENTER" contentDisplay="CENTER" layoutY="45.0" <Button id="hide" alignment="CENTER" contentDisplay="CENTER" layoutY="45.0" minHeight="-Infinity" minWidth="-Infinity" text="" textAlignment="CENTER">
text="" textAlignment="CENTER">
<graphic> <graphic>
<MaterialDesignIconView fill="WHITE" glyphName="MINUS" size="30" textAlignment="CENTER"/> <ImageView>
</graphic> <image>
</Button> <Image url="@../../images/icons/hide.png" />
<Button id="close" alignment="CENTER" contentDisplay="CENTER" text="" </image>
textAlignment="CENTER"> </ImageView>
</graphic></Button>
<Button id="close" alignment="CENTER" contentDisplay="CENTER" minHeight="-Infinity" minWidth="-Infinity" text="" textAlignment="CENTER">
<graphic> <graphic>
<MaterialDesignIconView fill="WHITE" glyphName="CLOSE" size="30" textAlignment="CENTER"/> <ImageView>
</graphic> <image>
</Button> <Image url="@../../images/icons/close.png" />
</image>
</ImageView>
</graphic></Button>
</children> </children>
</Pane> </Pane>
<TextArea fx:id="output" prefHeight="419.0" prefWidth="692.0"> <TextArea fx:id="output" prefHeight="419.0" prefWidth="692.0">
<padding> <padding>
<Insets left="10.0" top="10.0"/> <Insets left="10.0" top="10.0" />
</padding> </padding>
</TextArea> </TextArea>
<TextField fx:id="textField" layoutY="420.0" prefHeight="30.0" prefWidth="543.0" <TextField fx:id="textField" layoutY="420.0" prefHeight="30.0" prefWidth="543.0" promptText="Введите команду...">
promptText="Введите команду...">
<opaqueInsets> <opaqueInsets>
<Insets/> <Insets />
</opaqueInsets> </opaqueInsets>
<padding> <padding>
<Insets left="10.0"/> <Insets left="10.0" />
</padding> </padding>
</TextField> </TextField>
<Button fx:id="send" defaultButton="true" layoutX="542.0" layoutY="420.0" prefHeight="30.0" prefWidth="147.0" <Button fx:id="send" defaultButton="true" layoutX="542.0" layoutY="420.0" prefHeight="30.0" prefWidth="147.0" text="Выполнить" />
text="Выполнить"/> <Line endX="594.0" layoutX="98.0" layoutY="420.0" startX="-100.0" stroke="#5b3636" styleClass="lineHead" />
<Line endX="594.0" layoutX="98.0" layoutY="420.0" startX="-100.0" stroke="#5b3636" styleClass="lineHead"/>
</children> </children>
<stylesheets> <stylesheets>
<URL value="@../../styles.css"/> <URL value="@../../styles.css" />
<URL value="@../../overlay/debug/debug.css"/> <URL value="@../../overlay/debug/debug.css" />
</stylesheets> </stylesheets>
</Pane> </Pane>

View file

@ -1,19 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.String?>
<?import java.net.URL?>
<?import javafx.scene.control.Button?> <?import javafx.scene.control.Button?>
<?import javafx.scene.control.CheckBox?> <?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.ComboBox?> <?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Hyperlink?>
<?import javafx.scene.control.PasswordField?> <?import javafx.scene.control.PasswordField?>
<?import javafx.scene.control.TextField?> <?import javafx.scene.control.TextField?>
<?import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIconView?> <?import javafx.scene.image.Image?>
<?import java.lang.String?> <?import javafx.scene.image.ImageView?>
<?import java.net.URL?>
<?import javafx.scene.control.Hyperlink?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<!-- DrLeonardo Design --> <!-- DrLeonardo Design -->
<Pane fx:id="loginPane" prefWidth="740.0" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1"> <Pane fx:id="loginPane" prefWidth="740.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<Pane fx:id="layout" prefWidth="740.0"> <Pane fx:id="layout" prefWidth="740.0">
<children> <children>
@ -40,21 +41,30 @@
<Pane id="mask" opacity="0.0" prefHeight="450.0" prefWidth="694.0" visible="false" /> <Pane id="mask" opacity="0.0" prefHeight="450.0" prefWidth="694.0" visible="false" />
<Pane fx:id="bar" layoutX="694.0" prefHeight="425.0" prefWidth="43.0" styleClass="bar"> <Pane fx:id="bar" layoutX="694.0" prefHeight="425.0" prefWidth="43.0" styleClass="bar">
<children> <children>
<Button id="hide" alignment="CENTER" contentDisplay="CENTER" layoutY="45.0" text="" textAlignment="CENTER"> <Button id="hide" alignment="CENTER" contentDisplay="CENTER" layoutY="45.0" minHeight="-Infinity" minWidth="-Infinity" text="" textAlignment="CENTER">
<graphic> <graphic>
<MaterialDesignIconView fill="WHITE" glyphName="MINUS" size="30" textAlignment="CENTER" /> <ImageView>
</graphic> <image>
</Button> <Image url="@../../images/icons/hide.png" />
<Button id="close" alignment="CENTER" contentDisplay="CENTER" text="" textAlignment="CENTER"> </image>
</ImageView>
</graphic></Button>
<Button id="close" alignment="CENTER" contentDisplay="CENTER" minHeight="-Infinity" minWidth="-Infinity" text="" textAlignment="CENTER">
<graphic> <graphic>
<MaterialDesignIconView fill="WHITE" glyphName="CLOSE" size="30" textAlignment="CENTER" /> <ImageView>
</graphic> <image>
</Button> <Image url="@../../images/icons/close.png" />
<Button id="discord" alignment="CENTER" contentDisplay="CENTER" layoutY="370.0" text="" textAlignment="CENTER"> </image>
</ImageView>
</graphic></Button>
<Button id="discord" alignment="CENTER" contentDisplay="CENTER" layoutY="370.0" minHeight="-Infinity" minWidth="-Infinity" text="" textAlignment="CENTER">
<graphic> <graphic>
<MaterialDesignIconView fill="#5fd97a" glyphName="MESSAGE_TEXT" size="20" textAlignment="CENTER" /> <ImageView>
</graphic> <image>
</Button> <Image url="@../../images/icons/discord.png" />
</image>
</ImageView>
</graphic></Button>
</children> </children>
</Pane> </Pane>
</children> </children>

View file

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView?>
<?import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIconView?>
<?import java.net.URL?> <?import java.net.URL?>
<?import javafx.geometry.Insets?> <?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
<?import javafx.scene.control.ScrollPane?> <?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.FlowPane?> <?import javafx.scene.layout.FlowPane?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<!-- DrLeonardo Design --> <!-- DrLeonardo Design -->
<Pane fx:id="serverPaneLayout" maxHeight="-1.0" maxWidth="-1.0" prefWidth="740.0" visible="true" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1"> <Pane fx:id="serverPaneLayout" maxHeight="-1.0" maxWidth="-1.0" prefWidth="740.0" visible="true" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<Pane fx:id="layout" maxHeight="-1.0" maxWidth="-1.0" prefWidth="740.0" visible="true" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1"> <Pane fx:id="layout" maxHeight="-1.0" maxWidth="-1.0" prefWidth="740.0" visible="true" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
@ -51,9 +51,13 @@
<Font size="22.0" /> <Font size="22.0" />
</font> </font>
</Button> </Button>
<Button id="clientSettings" alignment="CENTER" centerShape="false" contentDisplay="CENTER" layoutX="305.0" layoutY="380.0" prefHeight="51.0" prefWidth="60.0" styleClass="clientSettings" text="" textAlignment="CENTER"> <Button id="clientSettings" alignment="CENTER" centerShape="false" contentDisplay="CENTER" layoutX="305.0" layoutY="380.0" minHeight="-Infinity" minWidth="-Infinity" prefHeight="51.0" prefWidth="60.0" styleClass="clientSettings" text="" textAlignment="CENTER">
<graphic> <graphic>
<FontAwesomeIconView fill="WHITE" glyphName="SLIDERS" size="30.0" /> <ImageView>
<image>
<Image url="@../../images/icons/list.png" />
</image>
</ImageView>
</graphic></Button> </graphic></Button>
<Label id="serverStatus" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="165.0" layoutY="12.0" prefHeight="25.0" prefWidth="97.0" text="12/100" textAlignment="RIGHT" textFill="WHITE"> <Label id="serverStatus" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="165.0" layoutY="12.0" prefHeight="25.0" prefWidth="97.0" text="12/100" textAlignment="RIGHT" textFill="WHITE">
<font> <font>
@ -74,31 +78,46 @@
</Pane> </Pane>
<Pane fx:id="bar" layoutX="694.0" prefHeight="425.0" prefWidth="43.0" styleClass="bar"> <Pane fx:id="bar" layoutX="694.0" prefHeight="425.0" prefWidth="43.0" styleClass="bar">
<children> <children>
<Button id="hide" alignment="CENTER" contentDisplay="CENTER" layoutY="45.0" text="" textAlignment="CENTER"> <Button id="hide" alignment="CENTER" contentDisplay="CENTER" layoutY="45.0" minHeight="-Infinity" minWidth="-Infinity" text="" textAlignment="CENTER">
<graphic> <graphic>
<MaterialDesignIconView fill="WHITE" glyphName="MINUS" size="30" textAlignment="CENTER" /> <ImageView>
</graphic> <image>
</Button> <Image url="@../../images/icons/hide.png" />
<Button id="close" alignment="CENTER" contentDisplay="CENTER" text="" textAlignment="CENTER"> </image>
</ImageView>
</graphic></Button>
<Button id="close" alignment="CENTER" contentDisplay="CENTER" minHeight="-Infinity" minWidth="-Infinity" text="" textAlignment="CENTER">
<graphic> <graphic>
<MaterialDesignIconView fill="WHITE" glyphName="CLOSE" size="30" textAlignment="CENTER" /> <ImageView>
</graphic> <image>
</Button> <Image url="@../../images/icons/close.png" />
<Button id="discord" alignment="CENTER" contentDisplay="CENTER" layoutY="380.0" text="" textAlignment="CENTER"> </image>
</ImageView>
</graphic></Button>
<Button id="discord" alignment="CENTER" contentDisplay="CENTER" layoutY="380.0" minHeight="-Infinity" minWidth="-Infinity" text="" textAlignment="CENTER">
<graphic> <graphic>
<MaterialDesignIconView fill="#5fd97a" glyphName="MESSAGE_TEXT" size="20" smooth="false" textAlignment="CENTER" /> <ImageView>
</graphic> <image>
</Button> <Image url="@../../images/icons/discord.png" />
<Button id="settings" alignment="CENTER" contentDisplay="CENTER" layoutY="90.0" text="" textAlignment="CENTER"> </image>
</ImageView>
</graphic></Button>
<Button id="settings" alignment="CENTER" contentDisplay="CENTER" layoutY="90.0" minHeight="-Infinity" minWidth="-Infinity" text="" textAlignment="CENTER">
<graphic> <graphic>
<MaterialDesignIconView fill="WHITE" glyphName="SETTINGS" size="20" textAlignment="CENTER" /> <ImageView>
</graphic> <image>
</Button> <Image url="@../../images/icons/settings.png" />
<Button id="goConsole" alignment="CENTER" contentDisplay="CENTER" layoutY="138.0" text="" textAlignment="CENTER"> </image>
</ImageView>
</graphic></Button>
<Button id="goConsole" alignment="CENTER" contentDisplay="CENTER" layoutY="138.0" minHeight="-Infinity" minWidth="-Infinity" text="" textAlignment="CENTER">
<graphic> <graphic>
<MaterialDesignIconView fill="WHITE" glyphName="CONSOLE" size="20" textAlignment="CENTER" /> <ImageView>
</graphic> <image>
</Button> <Image url="@../../images/icons/console.png" />
</image>
</ImageView>
</graphic></Button>
</children> </children>
</Pane> </Pane>
<Pane id="mask" opacity="0.0" prefHeight="450.0" prefWidth="694.0" visible="false" /> <Pane id="mask" opacity="0.0" prefHeight="450.0" prefWidth="694.0" visible="false" />

View file

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIconView?>
<?import java.net.URL?> <?import java.net.URL?>
<?import javafx.geometry.Insets?> <?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ScrollPane?> <?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.shape.Line?> <?import javafx.scene.shape.Line?>
@ -13,7 +14,7 @@
<!-- DrLeonardo Design --> <!-- DrLeonardo Design -->
<Pane fx:id="background" prefHeight="450.0" prefWidth="740.0" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1"> <Pane fx:id="background" prefHeight="450.0" prefWidth="740.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<Pane id="optionsPane" prefHeight="450.0" prefWidth="692.0" styleClass="optionsPane"> <Pane id="optionsPane" prefHeight="450.0" prefWidth="692.0" styleClass="optionsPane">
<children> <children>
@ -38,21 +39,30 @@
</Pane> </Pane>
<Pane fx:id="bar" layoutX="694.0" prefHeight="425.0" prefWidth="43.0" styleClass="bar"> <Pane fx:id="bar" layoutX="694.0" prefHeight="425.0" prefWidth="43.0" styleClass="bar">
<children> <children>
<Button id="hide" alignment="CENTER" contentDisplay="CENTER" layoutY="45.0" text="" textAlignment="CENTER"> <Button id="hide" alignment="CENTER" contentDisplay="CENTER" layoutY="45.0" minHeight="-Infinity" minWidth="-Infinity" text="" textAlignment="CENTER">
<graphic> <graphic>
<MaterialDesignIconView fill="WHITE" glyphName="MINUS" size="30" textAlignment="CENTER" /> <ImageView>
</graphic> <image>
</Button> <Image url="@../../images/icons/hide.png" />
<Button id="close" alignment="CENTER" contentDisplay="CENTER" text="" textAlignment="CENTER"> </image>
</ImageView>
</graphic></Button>
<Button id="close" alignment="CENTER" contentDisplay="CENTER" minHeight="-Infinity" minWidth="-Infinity" text="" textAlignment="CENTER">
<graphic> <graphic>
<MaterialDesignIconView fill="WHITE" glyphName="CLOSE" size="30" textAlignment="CENTER" /> <ImageView>
</graphic> <image>
</Button> <Image url="@../../images/icons/close.png" />
<Button id="back" alignment="CENTER" contentDisplay="CENTER" layoutY="405.0" text="" textAlignment="CENTER"> </image>
</ImageView>
</graphic></Button>
<Button id="back" alignment="CENTER" contentDisplay="CENTER" layoutY="405.0" minHeight="-Infinity" minWidth="-Infinity" text="" textAlignment="CENTER">
<graphic> <graphic>
<MaterialDesignIconView fill="WHITE" glyphName="CHEVRON_LEFT" size="30" textAlignment="CENTER" /> <ImageView>
</graphic> <image>
</Button> <Image url="@../../images/icons/back.png" />
</image>
</ImageView>
</graphic></Button>
</children> </children>
</Pane> </Pane>
</children> </children>

View file

@ -5,7 +5,7 @@ var options = {
LogHelper.debug("Loading options file"); LogHelper.debug("Loading options file");
try { try {
tryWithResources(new HInput(IOHelper.newInput(options.file)), options.read); tryWithResources(new HInput(IOHelper.newInput(options.file)), options.read);
} catch(e) { } catch (e) {
LogHelper.error(e); LogHelper.error(e);
} }
}, },
@ -14,7 +14,7 @@ var options = {
LogHelper.debug("Saving options file"); LogHelper.debug("Saving options file");
try { try {
tryWithResources(new HOutput(IOHelper.newOutput(options.file)), options.write); tryWithResources(new HOutput(IOHelper.newOutput(options.file)), options.write);
} catch(e) { } catch (e) {
LogHelper.error(e); LogHelper.error(e);
} }
}, },
@ -25,32 +25,26 @@ var options = {
throw new java.io.IOException("options magic mismatch: " + java.lang.Integer.toString(magic, 16)); throw new java.io.IOException("options magic mismatch: " + java.lang.Integer.toString(magic, 16));
} }
var profilesCount = input.readInt(); var profilesCount = input.readInt();
LogHelper.debug("Load options. ProfilesCount %d",profilesCount); LogHelper.debug("Load options. ProfilesCount %d", profilesCount);
for(var i = 0;i<profilesCount;i++) for (var i = 0; i < profilesCount; i++) {
{
var listSize = input.readInt(); var listSize = input.readInt();
var sortIndex = input.readInt(); var sortIndex = input.readInt();
var profile = null; var profile = null;
settings.lastProfiles.forEach(function(hprofile,i,arr) { settings.lastProfiles.forEach(function(hprofile, i, arr) {
if(hprofile.getSortIndex() == sortIndex) if (hprofile.getSortIndex() == sortIndex) {
{
profile = hprofile; profile = hprofile;
} }
}); });
for(var j = 0; j < listSize; j++) for (var j = 0; j < listSize; j++) {
{
var mark = input.readBoolean(); var mark = input.readBoolean();
var modType = OptionalFile.readType(input); var modType = OptionalFile.readType(input);
var modFile = input.readString(0); var modFile = input.readString(0);
if(mark) if (mark) {
{ profile.markOptional(modFile, modType);
profile.markOptional(modFile,modType); LogHelper.debug("Load options %s marked", modFile);
LogHelper.debug("Load options %s marked",modFile); } else {
} profile.unmarkOptional(modFile, modType);
else LogHelper.debug("Load options %s unmarked", modFile);
{
profile.unmarkOptional(modFile,modType);
LogHelper.debug("Load options %s unmarked",modFile);
} }
} }
} }
@ -59,13 +53,13 @@ var options = {
write: function(output) { write: function(output) {
output.writeInt(config.settingsMagic); output.writeInt(config.settingsMagic);
output.writeInt(settings.lastProfiles.length); output.writeInt(settings.lastProfiles.length);
settings.lastProfiles.forEach(function(hprofile,i,arr) { settings.lastProfiles.forEach(function(hprofile, i, arr) {
var profile = hprofile; var profile = hprofile;
LogHelper.debug("Save options %s",profile.getTitle()); LogHelper.debug("Save options %s", profile.getTitle());
var list = profile.getOptional(); var list = profile.getOptional();
output.writeInt(list.size()); output.writeInt(list.size());
output.writeInt(profile.getSortIndex()); output.writeInt(profile.getSortIndex());
list.forEach(function(modFile,j,arr2) { list.forEach(function(modFile, j, arr2) {
output.writeBoolean(modFile.mark); output.writeBoolean(modFile.mark);
modFile.writeType(output); modFile.writeType(output);
output.writeString(modFile.name, 0); output.writeString(modFile.name, 0);
@ -82,50 +76,47 @@ var options = {
var modlist = pane.lookup("#modlist").getContent(); var modlist = pane.lookup("#modlist").getContent();
var nodelist = new java.util.ArrayList; var nodelist = new java.util.ArrayList;
modlist.getChildren().forEach(function(node,i,arr) { modlist.getChildren().forEach(function(node, i, arr) {
if(node instanceof javafx.scene.control.CheckBox) if (node instanceof javafx.scene.control.CheckBox)
nodelist.add(node); nodelist.add(node);
}); });
nodelist.forEach(function(node,i,arr) { nodelist.forEach(function(node, i, arr) {
modlist.getChildren().remove(node); modlist.getChildren().remove(node);
}); });
var profile = profilesList[serverHolder.old]; var profile = profilesList[serverHolder.old];
var list = profile.getOptional(); var list = profile.getOptional();
var checkBoxList = new java.util.ArrayList; var checkBoxList = new java.util.ArrayList;
list.forEach(function(modFile) { list.forEach(function(modFile) {
var modName = modFile.name, modDescription = "", subLevel = 1; var modName = modFile.name,
if(!modFile.visible) modDescription = "",
{ subLevel = 1;
LogHelper.debug("optionalMod %s hidden",modFile.name); if (!modFile.visible) {
LogHelper.debug("optionalMod %s hidden", modFile.name);
return; return;
} }
if(modFile.permissions != 0 && ((loginData.permissions.toLong() & modFile.permissions) == 0)) if (modFile.permissions != 0 && ((loginData.permissions.toLong() & modFile.permissions) == 0)) {
{ LogHelper.debug("optionalMod %s permissions deny", modFile.name);
LogHelper.debug("optionalMod %s permissions deny",modFile.name);
return; return;
} }
if(modFile.info != null) if (modFile.info != null)
modDescription = modFile.info; modDescription = modFile.info;
if(modFile.subTreeLevel != null && modFile.subTreeLevel > 1) if (modFile.subTreeLevel != null && modFile.subTreeLevel > 1)
subLevel = modFile.subTreeLevel; subLevel = modFile.subTreeLevel;
var testMod = new javafx.scene.control.CheckBox(modName); var testMod = new javafx.scene.control.CheckBox(modName);
testMod.getStyleClass().add("checkboxOpt"); testMod.getStyleClass().add("checkboxOpt");
if(subLevel > 1) if (subLevel > 1)
for(var i = 1; i < subLevel; i++) for (var i = 1; i < subLevel; i++)
testMod.setTranslateX(25*i); testMod.setTranslateX(25 * i);
testMod.setSelected(modFile.mark); testMod.setSelected(modFile.mark);
testMod.setOnAction(function(event) { testMod.setOnAction(function(event) {
var isSelected = event.getSource().isSelected(); var isSelected = event.getSource().isSelected();
if(isSelected) if (isSelected) {
{
profile.markOptional(modFile); profile.markOptional(modFile);
LogHelper.debug("Selected mod %s", modFile.name); LogHelper.debug("Selected mod %s", modFile.name);
} } else {
else
{
profile.unmarkOptional(modFile); profile.unmarkOptional(modFile);
LogHelper.debug("Unselected mod %s", modFile.name); LogHelper.debug("Unselected mod %s", modFile.name);
} }
@ -134,12 +125,12 @@ var options = {
testMod.setFocusTraversable(false); testMod.setFocusTraversable(false);
checkBoxList.add(testMod); checkBoxList.add(testMod);
testMod.getStyleClass().add("modname"); testMod.getStyleClass().add("modname");
if(modDescription != "") { if (modDescription != "") {
textDescr = new javafx.scene.text.Text(modDescription); textDescr = new javafx.scene.text.Text(modDescription);
if(subLevel > 1) { if (subLevel > 1) {
for(var i = 1; i < subLevel; i++){ for (var i = 1; i < subLevel; i++) {
textDescr.setWrappingWidth(620-(25*i)); textDescr.setWrappingWidth(620 - (25 * i));
textDescr.setTranslateX(25+(25*i)); textDescr.setTranslateX(25 + (25 * i));
} }
} else { } else {
textDescr.setWrappingWidth(620); textDescr.setWrappingWidth(620);

View file

@ -1,6 +1,6 @@
/*-- DrLeonardo Design --*/ /*-- DrLeonardo Design --*/
/* Server buttons */ /* Server buttons */
.server-button { .server-button {
-fx-font-weight: bold; -fx-font-weight: bold;
-fx-font-size: 16pt; -fx-font-size: 16pt;
@ -16,14 +16,14 @@ .server-button {
} }
.server-button:selected { .server-button:selected {
-fx-effect: dropshadow(gaussian, rgba(23, 25, 29, 0.3), 15,0,0,3); -fx-effect: dropshadow(gaussian, rgba(23, 25, 29, 0.3), 15, 0, 0, 3);
} }
/** server-button-<your profile name> **/ /** server-button-<your profile name> **/
.server-button-Example { .server-button-Example {
-fx-background-image: url('images/servers/example.png'); -fx-background-image: url('images/servers/example.png');
} }
/*-- DrLeonardo Design --*/ /*-- DrLeonardo Design --*/

View file

@ -12,7 +12,7 @@ CheckBox .box-container {
CheckBox .box, CheckBox .box,
CheckBox:indeterminate .box, CheckBox:indeterminate .box,
CheckBox:indeterminate:selected .box{ CheckBox:indeterminate:selected .box {
-fx-pref-width: 18; -fx-pref-width: 18;
-fx-pref-height: 18; -fx-pref-height: 18;
@ -46,7 +46,7 @@ CheckBox:selected .mark {
-fx-border-radius: 2; -fx-border-radius: 2;
} }
CheckBox .indeterminate-mark{ CheckBox .indeterminate-mark {
-fx-background-color: #5fd97a; -fx-background-color: #5fd97a;
-fx-background-radius: 2; -fx-background-radius: 2;
-fx-border-width: 0; -fx-border-width: 0;
@ -56,7 +56,10 @@ CheckBox .indeterminate-mark{
/*-- DrLeonardo Design --*/ /*-- DrLeonardo Design --*/
Button, CheckBox, ComboBox, RadioButton { Button,
CheckBox,
ComboBox,
RadioButton {
-fx-cursor: hand; -fx-cursor: hand;
} }
@ -69,20 +72,22 @@ #layout {
-fx-pref-height: 450px; -fx-pref-height: 450px;
-fx-background-image: url('images/background.jpg'); -fx-background-image: url('images/background.jpg');
} }
#background { #background {
-fx-background-color: #fff; -fx-background-color: #fff;
} }
/** Labels **/ /** Labels **/
#background > #settingsTitle { #background>#settingsTitle {
-fx-font-size: 14pt; -fx-font-size: 14pt;
-fx-alignment: baseline-center; -fx-alignment: baseline-center;
} }
#serverLabel{ #serverLabel {
-fx-text-fill: #323232; -fx-text-fill: #323232;
} }
#serverStatus{ #serverStatus {
-fx-text-fill: #323232; -fx-text-fill: #323232;
-fx-pref-width: 120px; -fx-pref-width: 120px;
-fx-pref-height: 25px; -fx-pref-height: 25px;
@ -90,17 +95,17 @@ #serverStatus{
/* Mask */ /* Mask */
#mask { #mask {
-fx-effect: DropShadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 ); -fx-effect: DropShadow(gaussian, rgba(255, 255, 255, 0.5), 0, 0, 0, 1);
} }
/** Errors **/ /** Errors **/
#errormessage{ #errormessage {
-fx-background-color: transparent; -fx-background-color: transparent;
-fx-text-alignment: center; -fx-text-alignment: center;
-fx-text-fill: #CE5757; -fx-text-fill: #CE5757;
} }
.error{ .error {
-fx-text-fill: #CE5757; -fx-text-fill: #CE5757;
} }
@ -110,6 +115,7 @@ #bar {
-fx-pref-width: 46px; -fx-pref-width: 46px;
-fx-pref-height: 450px; -fx-pref-height: 450px;
} }
/** buttons in bar **/ /** buttons in bar **/
#close { #close {
-fx-background-position: center; -fx-background-position: center;
@ -118,28 +124,35 @@ #close {
-fx-pref-width: 46px; -fx-pref-width: 46px;
-fx-pref-height: 45px; -fx-pref-height: 45px;
} }
#hide, #back, #goConsole, #settings, #discord {
#hide,
#back,
#goConsole,
#settings,
#discord {
-fx-background-position: center; -fx-background-position: center;
-fx-background-radius: 0; -fx-background-radius: 0;
-fx-pref-width: 46px; -fx-pref-width: 46px;
-fx-pref-height: 45px; -fx-pref-height: 45px;
} }
#logout{ #logout {
-fx-text-fill:#323232; -fx-text-fill: #323232;
-fx-font-size:12; -fx-font-size: 12;
-fx-font-weight:normal; -fx-font-weight: normal;
-fx-border-color:#CE5757; -fx-border-color: #CE5757;
-fx-border-width:1; -fx-border-width: 1;
-fx-background-color:transparent; -fx-background-color: transparent;
-fx-padding:0; -fx-padding: 0;
} }
#logout:hover, #logout:hover,
#logout:focus{ #logout:focus {
-fx-text-fill:#ff6a5e; -fx-text-fill: #ff6a5e;
} }
#logout:pressed{
-fx-border-color:#cb4d43; #logout:pressed {
-fx-border-color: #cb4d43;
} }
#send { #send {
@ -151,7 +164,9 @@ #send {
-fx-pref-height: 30px; -fx-pref-height: 30px;
} }
#send:pressed { -fx-background-color: #d8d8d8; } #send:pressed {
-fx-background-color: #d8d8d8;
}
/* LoginMenu */ /* LoginMenu */
#authPane { #authPane {
@ -176,18 +191,22 @@ .auth {
-fx-text-fill: #ffffff; -fx-text-fill: #ffffff;
-fx-pref-width: 200px; -fx-pref-width: 200px;
-fx-pref-height: 45px; -fx-pref-height: 45px;
-fx-effect: dropshadow(gaussian, rgba(23, 25, 29, 0.3), 15,0,0,3); -fx-effect: dropshadow(gaussian, rgba(23, 25, 29, 0.3), 15, 0, 0, 3);
} }
.auth:hover, .auth:pressed { -fx-background-color: #75e18c; } .auth:hover,
.auth:pressed {
-fx-background-color: #75e18c;
}
#password, #login { #password,
#login {
-fx-background-radius: 0; -fx-background-radius: 0;
-fx-pref-width: 200px; -fx-pref-width: 200px;
-fx-pref-height: 30px; -fx-pref-height: 30px;
} }
.text-input{ .text-input {
-fx-focus-color: transparent; -fx-focus-color: transparent;
-fx-background-repeat: no-repeat; -fx-background-repeat: no-repeat;
-fx-text-fill: #909090; -fx-text-fill: #909090;
@ -208,21 +227,26 @@ #link {
-fx-pref-height: 17px; -fx-pref-height: 17px;
} }
#link:hover, #link:pressed { -fx-opacity: 0.8; } #link:hover,
#link:pressed {
-fx-opacity: 0.8;
}
/** CheckBox & ComboBox**/ /** CheckBox & ComboBox**/
#rememberchb{ #rememberchb {
-fx-font-size: 13; -fx-font-size: 13;
-fx-text-fill: #909090; -fx-text-fill: #909090;
-fx-pref-width: 145px; -fx-pref-width: 145px;
-fx-pref-height: 30px; -fx-pref-height: 30px;
} }
#combologin { #combologin {
-fx-text-fill: #909090; -fx-text-fill: #909090;
-fx-prompt-text-fill: #909090; -fx-prompt-text-fill: #909090;
-fx-pref-width: 200px; -fx-pref-width: 200px;
-fx-pref-height: 30px; -fx-pref-height: 30px;
} }
.combologin, .combologin,
.combologin { .combologin {
-fx-font-size: 13px; -fx-font-size: 13px;
@ -240,7 +264,7 @@ .combologin .list-cell {
.combologin-popup .list-view { .combologin-popup .list-view {
-fx-background-color: white, white; -fx-background-color: white, white;
-fx-background-insets: 0, 1; -fx-background-insets: 0, 1;
-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 8, 0.0 , 0 , 0 ); -fx-effect: dropshadow(three-pass-box, rgba(0, 0, 0, 0.6), 8, 0.0, 0, 0);
} }
.combologin .list-cell:filled:selected .text, .combologin .list-cell:filled:selected .text,
@ -253,20 +277,18 @@ .combologin .arrow {
-fx-background-color: #5fd97a; -fx-background-color: #5fd97a;
} }
.combologin-popup .list-view .list-cell .combologin-popup .list-view .list-cell {
{
-fx-background-color: white; -fx-background-color: white;
} }
.combologin-popup .list-view .list-cell:filled:selected, .combologin-popup .list-view .list-cell:filled:selected:hover .combologin-popup .list-view .list-cell:filled:selected,
{ .combologin-popup .list-view .list-cell:filled:selected:hover {
-fx-background: -fx-accent; -fx-background: -fx-accent;
-fx-background-color: -fx-selection-bar; -fx-background-color: -fx-selection-bar;
-fx-text-fill: #909090; -fx-text-fill: #909090;
} }
.combologin-popup .list-view .list-cell:filled:hover .combologin-popup .list-view .list-cell:filled:hover {
{
-fx-background-color: white; -fx-background-color: white;
-fx-text-fill: #909090; -fx-text-fill: #909090;
} }
@ -286,20 +308,24 @@ .serverentrance {
} }
/** buttons **/ /** buttons **/
.clientLaunch{ .clientLaunch {
-fx-font-weight: bold; -fx-font-weight: bold;
-fx-font-size: 16pt; -fx-font-size: 16pt;
-fx-background-radius: 0; -fx-background-radius: 0;
-fx-background-color: #5fd97a; -fx-background-color: #5fd97a;
-fx-text-fill: #ffffff; -fx-text-fill: #ffffff;
} }
.clientSettings{
.clientSettings {
-fx-background-position: center; -fx-background-position: center;
-fx-background-color: #5fd97a; -fx-background-color: #5fd97a;
-fx-background-radius: 0; -fx-background-radius: 0;
} }
.clientLaunch:hover, .clientLaunch:pressed { -fx-background-color: #75e18c; } .clientLaunch:hover,
.clientLaunch:pressed {
-fx-background-color: #75e18c;
}
/* Scrolls */ /* Scrolls */
.scroll-pane { .scroll-pane {
@ -340,11 +366,11 @@ .scroll-pane>.corner {
} }
/* OptionsPane */ /* OptionsPane */
#optionsPane > #modlist { #optionsPane>#modlist {
-fx-background-color: transparent; -fx-background-color: transparent;
} }
#optionsPane > #modlist > .viewport { #optionsPane>#modlist>.viewport {
-fx-background-color: transparent; -fx-background-color: transparent;
} }
@ -368,38 +394,42 @@ .separator *.line {
-fx-border-width: 0 0 10 0; -fx-border-width: 0 0 10 0;
} }
#serverlist{ #serverlist {
-fx-background-color: transparent;
}
#serverlist > .viewport {
-fx-background-color: transparent; -fx-background-color: transparent;
} }
#serverdesc{ #serverlist>.viewport {
-fx-background-color: transparent;
}
#serverdesc > .viewport {
-fx-background-color: transparent; -fx-background-color: transparent;
} }
#serverinfo{ #serverdesc {
-fx-background-color: transparent;
}
#serverinfo > .viewport {
-fx-background-color: transparent; -fx-background-color: transparent;
} }
#servercontainer{ #serverdesc>.viewport {
-fx-background-color: transparent;
}
#serverinfo {
-fx-background-color: transparent;
}
#serverinfo>.viewport {
-fx-background-color: transparent;
}
#servercontainer {
-fx-background-color: transparent; -fx-background-color: transparent;
-fx-pref-width: 282px; -fx-pref-width: 282px;
-fx-pref-height: 75px; -fx-pref-height: 75px;
} }
.toggle-button:disabled{ .toggle-button:disabled {
-fx-opacity: 1.0; -fx-opacity: 1.0;
} }
.heading{ .heading {
-fx-text-fill: #555555; -fx-text-fill: #555555;
} }
/*-- DrLeonardo Design --*/ /*-- DrLeonardo Design --*/

View file

@ -9,7 +9,8 @@ var LauncherApp = Java.extend(JSApplication, {
settings = SettingsManager.settings; settings = SettingsManager.settings;
settingsManager.loadHDirStore(); settingsManager.loadHDirStore();
cliParams.applySettings(); cliParams.applySettings();
}, start: function(primaryStage) { },
start: function(primaryStage) {
stage = primaryStage; stage = primaryStage;
stage.initStyle(javafx.stage.StageStyle.TRANSPARENT); stage.initStyle(javafx.stage.StageStyle.TRANSPARENT);
stage.setResizable(false); stage.setResizable(false);
@ -45,7 +46,8 @@ var LauncherApp = Java.extend(JSApplication, {
setCurrentScene(loginScene); setCurrentScene(loginScene);
initLauncher(); initLauncher();
}, stop: function() { },
stop: function() {
settingsManager.saveConfig(); settingsManager.saveConfig();
settingsManager.saveHDirStore(); settingsManager.saveHDirStore();
options.save(); options.save();