This commit is contained in:
DrLeonardo 2019-04-08 17:06:07 +03:00
parent 6d69efe258
commit cf89635471
9 changed files with 168 additions and 98 deletions

View file

@ -7,7 +7,7 @@
<!-- DrLeonardo Design --> <!-- DrLeonardo Design -->
<Pane fx:id="layout" prefWidth="740.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.201" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<Pane fx:id="consolePane" prefHeight="425.0" prefWidth="693.0" styleClass="consolePane"> <Pane fx:id="consolePane" prefHeight="425.0" prefWidth="693.0" styleClass="consolePane">
<children> <children>

View file

@ -1,4 +1,4 @@
var authPane, dimPane, serverPane, bar; var authPane, dimPane, serverPane, bar, optionsPane;
var loginField, passwordField, savePasswordBox; var loginField, passwordField, savePasswordBox;
var serverList, serverInfo, serverDescription, serverEntrance, serverLabel, serverStatus; var serverList, serverInfo, serverDescription, serverEntrance, serverLabel, serverStatus;
var profilesList = []; var profilesList = [];
@ -10,12 +10,13 @@ function initLauncher() {
initLoginScene(); initLoginScene();
initMenuScene(); initMenuScene();
initConsoleScene(); initConsoleScene();
initOptionsScene();
debug.initOverlay(); debug.initOverlay();
processing.initOverlay(); processing.initOverlay();
settingsOverlay.initOverlay(); settingsOverlay.initOverlay();
update.initOverlay(); update.initOverlay();
options.initOverlay(); //options.initOverlay();
verifyLauncher(); verifyLauncher();
} }
@ -176,34 +177,18 @@ function goAuth(event) {
/* ======== Console ======== */ /* ======== Console ======== */
function goConsole(event) { function goConsole(event) {
if (overlay.current !== null) { setCurrentScene(consoleScene);
return;
}
} }
/* ======== Settings ======== */ /* ======== Settings ======== */
function goSettings(event) { function goSettings(event) {
// Verify there's no other overlays
if (overlay.current !== null) { if (overlay.current !== null) {
return; return;
} }
// Show settings overlay
overlay.show(settingsOverlay.overlay, null); overlay.show(settingsOverlay.overlay, null);
} }
/* ======== Options ======== */
function goOptions(event) {
// Verify there's no other overlays
if (overlay.current !== null) {
return;
}
// Show options overlay
options.update();
overlay.show(options.overlay, null);
}
/* ======== Processing functions ======== */ /* ======== Processing functions ======== */
function verifyLauncher(e) { function verifyLauncher(e) {
processing.resetOverlay(); processing.resetOverlay();
@ -245,7 +230,7 @@ function doAuth(login, rsaPassword) {
} }
function doUpdate(profile, pp, accessToken) { function doUpdate(profile, pp, accessToken) {
var digest = profile.isUpdateFastCheck(); var digest = profile.isUpdateFastCheck();
overlay.swap(0, update.overlay, function(event) { overlay.swap(0, update.overlay, function(event) {
update.resetOverlay("Обновление файлов ресурсов"); update.resetOverlay("Обновление файлов ресурсов");
@ -275,7 +260,7 @@ function doLaunchClient(assetDir, assetHDir, clientDir, clientHDir, profile, pp,
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) {

View file

@ -3,6 +3,7 @@
<?import com.jfoenix.controls.JFXButton?> <?import com.jfoenix.controls.JFXButton?>
<?import com.jfoenix.controls.JFXTextArea?> <?import com.jfoenix.controls.JFXTextArea?>
<?import java.net.URL?> <?import java.net.URL?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<!-- DrLeonardo Design --> <!-- DrLeonardo Design -->
@ -14,7 +15,10 @@
</stylesheets> </stylesheets>
<!-- Debug controls --> <!-- Debug controls -->
<JFXTextArea fx:id="output" prefHeight="425.0" prefWidth="693.0" /> <JFXTextArea fx:id="output" prefHeight="425.0" prefWidth="693.0">
<JFXButton fx:id="copy" defaultButton="true" layoutX="423.0" layoutY="390.0" prefHeight="30.0" prefWidth="100.0" text="Копировать" /> <padding>
<JFXButton fx:id="action" layoutX="583.0" layoutY="390.0" prefHeight="25.0" prefWidth="100.0" text="Убить" /> <Insets left="10.0" right="10.0" />
</padding></JFXTextArea>
<JFXButton fx:id="copy" defaultButton="true" layoutX="373.0" layoutY="390.0" prefHeight="30.0" prefWidth="100.0" text="Копировать" />
<JFXButton fx:id="action" layoutX="533.0" layoutY="390.0" prefHeight="25.0" prefWidth="150.0" text="Убить" />
</Pane> </Pane>

View file

@ -1,33 +1,61 @@
/*-- DrLeonardo Design --*/ /*-- DrLeonardo Design --*/
#holder { #background {
-fx-background-color: #fff; -fx-background-color: #fff;
} }
/* Labels */ /* Labels */
#holder > #settingsTitle { #background > #settingsTitle {
-fx-font-size: 14pt; -fx-font-size: 14pt;
-fx-alignment: baseline-center; -fx-alignment: baseline-center;
} }
#holder > #apply{ .pressetLight {
-jfx-toggle-color: #61B373;
-jfx-untoggle-color: #FAFAFA;
-jfx-toggle-line-color: rgba(116, 192, 133, 0.79);
-jfx-untoggle-line-color: #999999;
-jfx-size: 10.0;
-jfx-disable-visual-focus: false;
}
.pressetMedium {
-jfx-toggle-color: #61B373;
-jfx-untoggle-color: #FAFAFA;
-jfx-toggle-line-color: rgba(116, 192, 133, 0.79);
-jfx-untoggle-line-color: #999999;
-jfx-size: 10.0;
-jfx-disable-visual-focus: false;
}
.pressetHigh {
-jfx-toggle-color: #61B373;
-jfx-untoggle-color: #FAFAFA;
-jfx-toggle-line-color: rgba(116, 192, 133, 0.79);
-jfx-untoggle-line-color: #999999;
-jfx-size: 10.0;
-jfx-disable-visual-focus: false;
}
#apply{
-fx-background-color: #61B373; -fx-background-color: #61B373;
-fx-background-radius: 0; -fx-background-radius: 0;
-fx-text-fill: white; -fx-text-fill: white;
-fx-background-position: center; -fx-background-position: center;
-jfx-button-type: FLAT; -jfx-button-type: FLAT;
-fx-pref-width: 150px; -fx-pref-width: 45px;
-fx-pref-height: 25px; -fx-pref-height: 45px;
} }
#holder > #apply:hover, #apply:hover,
#holder > #apply:focused{ #apply:focused{
-fx-background-color: #74C085; -fx-background-color: #74C085;
} }
#holder > #modlist { #optionsPane > #modlist {
-fx-background-color: transparent; -fx-background-color: transparent;
} }
#holder > #modlist > .viewport {
#optionsPane > #modlist > .viewport {
-fx-background-color: transparent; -fx-background-color: transparent;
} }
@ -36,6 +64,12 @@ .description-text {
-fx-fill: #8c8c8c; -fx-fill: #8c8c8c;
-fx-font-size: 12px; -fx-font-size: 12px;
} }
.lineHead {
-fx-stroke: #d8d8d8;
-fx-stroke-width: 3;
}
.separator *.line { .separator *.line {
-fx-border-color: transparent; -fx-border-color: transparent;
-fx-border-width: 0 0 10 0; -fx-border-width: 0 0 10 0;

View file

@ -1,21 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import com.jfoenix.controls.JFXButton?> <?import com.jfoenix.controls.JFXButton?>
<?import com.jfoenix.controls.JFXScrollPane?> <?import com.jfoenix.controls.JFXToggleButton?>
<?import java.net.URL?> <?import java.net.URL?>
<?import javafx.geometry.Insets?> <?import javafx.geometry.Insets?>
<?import javafx.scene.control.ScrollPane?>
<?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?>
<!-- DrLeonardo Design --> <!-- DrLeonardo Design -->
<Pane fx:id="overlay" prefHeight="425.0" prefWidth="693.0" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1"> <Pane fx:id="background" prefHeight="425.0" prefWidth="738.0" xmlns="http://javafx.com/javafx/8.0.201" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<Pane id="holder" prefHeight="425.0" prefWidth="693.0"> <Pane id="optionsPane" prefHeight="425.0" prefWidth="693.0" styleClass="optionsPane">
<children> <children>
<JFXScrollPane id="modlist" prefHeight="425.0" prefWidth="694.0"> <JFXToggleButton layoutX="10.0" layoutY="10.0" styleClass="pressetLight" text="Presset 1" />
<JFXToggleButton layoutX="267.0" layoutY="10.0" styleClass="pressetMedium" text="Presset 2" />
<JFXToggleButton layoutX="549.0" layoutY="10.0" prefHeight="58.0" prefWidth="134.0" styleClass="pressetHigh" text="Presset 3" wrapText="true" />
<Line endX="588.0" layoutX="100.0" layoutY="80.0" startX="-100.0" stroke="#5b3636" styleClass="lineHead" />
<ScrollPane id="modlist" layoutY="75.0" prefHeight="351.0" prefWidth="694.0">
<content> <content>
<VBox prefHeight="232.0" prefWidth="689.0"> <VBox prefHeight="349.0" prefWidth="692.0">
<children> <children>
</children> </children>
<padding> <padding>
@ -23,8 +29,15 @@
</padding> </padding>
</VBox> </VBox>
</content> </content>
</JFXScrollPane> </ScrollPane>
<JFXButton fx:id="apply" defaultButton="true" layoutX="532.0" layoutY="390.0" prefHeight="25.0" prefWidth="100.0" text="Применить" /> </children>
</Pane>
<Pane fx:id="bar" layoutX="693.0" prefHeight="425.0" prefWidth="43.0" styleClass="bar">
<children>
<JFXButton id="hide" alignment="CENTER" contentDisplay="CENTER" layoutY="45.0" text="" textAlignment="CENTER" />
<JFXButton id="close" alignment="CENTER" contentDisplay="CENTER" text="" textAlignment="CENTER" />
<JFXButton id="back" fx:id="back" alignment="CENTER" contentDisplay="CENTER" layoutY="335.0" text="" textAlignment="CENTER" />
<JFXButton fx:id="apply" layoutY="380.0" prefHeight="25.0" prefWidth="45.0" />
</children> </children>
</Pane> </Pane>
</children> </children>

View file

@ -1,3 +1,38 @@
var optionsPane;
/* ======== init Options ======== */
function initOptionsScene() {
optionsMenu.setOnMousePressed(function(event){ movePoint = new javafx.geometry.Point2D(event.getSceneX(), event.getSceneY())});
optionsMenu.setOnMouseDragged(function(event) {
if(movePoint === null) {
return;
}
stage.setX(event.getScreenX() - movePoint.getX());
stage.setY(event.getScreenY() - movePoint.getY());
});
var pane = optionsMenu.lookup("#bar");
bar = pane;
pane.lookup("#close").setOnAction(function(event){ javafx.application.Platform.exit()});
pane.lookup("#hide").setOnAction(function(event){ stage.setIconified(true)});
pane.lookup("#apply").setOnAction(function(){
setCurrentScene(menuScene);
});
pane.lookup("#back").setOnAction(function(){
setCurrentScene(menuScene);
});
var pane = optionsMenu.lookup("#optionsPane");
optionsPane = pane;
}
/* ======== Options ======== */
function goOptions(event) {
setCurrentScene(optionsScene);
}
var options = { var options = {
file: DirBridge.dir.resolve("options.bin"), file: DirBridge.dir.resolve("options.bin"),
@ -73,24 +108,19 @@ var options = {
}); });
}, },
/* ===================== OVERLAY ===================== */
count: 0, count: 0,
initOverlay: function() {
options.overlay = loadFXML("dialog/overlay/options/options.fxml");
var holder = options.overlay.lookup("#holder");
holder.lookup("#apply").setOnAction(function(event) overlay.hide(0, null));
},
update: function() { update: function() {
var holder = options.overlay.lookup("#modlist").getContent();
var modlist = pane.lookup("#modlist").getContent();
var nodelist = new java.util.ArrayList; var nodelist = new java.util.ArrayList;
holder.getChildren().forEach(function(node,i,arr) { modlist.getChildren().forEach(function(node,i,arr) {
if(node instanceof com.jfoenix.controls.JFXCheckBox) if(node instanceof com.jfoenix.controls.JFXCheckBox)
nodelist.add(node); nodelist.add(node);
}); });
nodelist.forEach(function(node,i,arr) { nodelist.forEach(function(node,i,arr) {
holder.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();
@ -108,14 +138,14 @@ var options = {
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 com.jfoenix.controls.JFXCheckBox(modName); var testMod = new com.jfoenix.controls.JFXCheckBox(modName);
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);
@ -134,7 +164,7 @@ var options = {
options.update(); options.update();
}); });
checkBoxList.add(testMod); checkBoxList.add(testMod);
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++){
@ -153,7 +183,7 @@ var options = {
sep.getStyleClass().add("separator"); sep.getStyleClass().add("separator");
checkBoxList.add(sep); checkBoxList.add(sep);
}); });
holder.getChildren().clear(); modlist.getChildren().clear();
holder.getChildren().addAll(checkBoxList); modlist.getChildren().addAll(checkBoxList);
} }
}; };

View file

@ -28,7 +28,7 @@
<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>
<Separator layoutY="112.0" prefHeight="3.0" prefWidth="693.0" /> <Separator layoutY="112.0" prefHeight="3.0" prefWidth="694.0" />
<!-- RAM settings --> <!-- RAM settings -->
<!-- Deldir settings --> <!-- Deldir settings -->
@ -43,7 +43,7 @@
<JFXButton fx:id="apply" defaultButton="true" layoutX="534.0" layoutY="365.0" prefHeight="23.0" prefWidth="100.0" text="Применить" /> <JFXButton fx:id="apply" defaultButton="true" layoutX="534.0" layoutY="365.0" prefHeight="23.0" prefWidth="100.0" text="Применить" />
<Text layoutX="16.0" layoutY="28.0">Выделение памяти: </Text> <Text layoutX="16.0" layoutY="28.0">Выделение памяти: </Text>
<JFXSlider fx:id="ramSlider" layoutX="14.0" layoutY="76.0" prefHeight="14.0" prefWidth="663.0" /> <JFXSlider fx:id="ramSlider" layoutX="14.0" layoutY="76.0" prefHeight="14.0" prefWidth="663.0" />
<Separator layoutY="400.0" prefHeight="3.0" prefWidth="693.0" /> <Separator layoutY="400.0" prefHeight="3.0" prefWidth="694.0" />
<Pane fx:id="transferDialog" prefHeight="425.0" prefWidth="694.0" visible="false"> <Pane fx:id="transferDialog" prefHeight="425.0" prefWidth="694.0" visible="false">
<children> <children>
<Text fill="WHITE" layoutX="147.0" layoutY="198.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Перенести все данные в новую директорию?" wrappingWidth="400.13671875"> <Text fill="WHITE" layoutX="147.0" layoutY="198.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Перенести все данные в новую директорию?" wrappingWidth="400.13671875">

View file

@ -254,7 +254,7 @@ .scroll-bar {
} }
.scroll-pane>.corner { .scroll-pane>.corner {
-fx-background-color: black; -fx-background-color: rgba(0, 0, 0, 0.19);
} }
/* Server buttons */ /* Server buttons */

View file

@ -1,5 +1,5 @@
var app, stage, scene, loginScene, menuScene, consoleScene; var app, stage, scene, loginScene, menuScene, consoleScene, optionsScene;
var rootPane, loginPane, authPane, menuPane, consolePane; var rootPane, loginPane, menuPane, consolePane, optionsMenu;
var LauncherApp = Java.extend(JSApplication, { var LauncherApp = Java.extend(JSApplication, {
init: function() { init: function() {
@ -21,6 +21,7 @@ var LauncherApp = Java.extend(JSApplication, {
loginPane = loadFXML("dialog/login.fxml"); loginPane = loadFXML("dialog/login.fxml");
menuPane = loadFXML("dialog/mainmenu.fxml"); menuPane = loadFXML("dialog/mainmenu.fxml");
consolePane = loadFXML("dialog/console.fxml"); consolePane = loadFXML("dialog/console.fxml");
optionsMenu = loadFXML("dialog/overlay/options/options.fxml");
loginScene = new javafx.scene.Scene(loginPane); loginScene = new javafx.scene.Scene(loginPane);
loginScene.setFill(javafx.scene.paint.Color.TRANSPARENT); loginScene.setFill(javafx.scene.paint.Color.TRANSPARENT);
@ -31,6 +32,9 @@ var LauncherApp = Java.extend(JSApplication, {
consoleScene = new javafx.scene.Scene(consolePane); consoleScene = new javafx.scene.Scene(consolePane);
consoleScene.setFill(javafx.scene.paint.Color.TRANSPARENT); consoleScene.setFill(javafx.scene.paint.Color.TRANSPARENT);
optionsScene = new javafx.scene.Scene(optionsMenu);
optionsScene.setFill(javafx.scene.paint.Color.TRANSPARENT);
setCurrentScene(loginScene); setCurrentScene(loginScene);
initLauncher(); initLauncher();