Skip to content

Commit

Permalink
feat: adjustable window alpha
Browse files Browse the repository at this point in the history
  • Loading branch information
isHarryh committed Oct 4, 2024
1 parent 764c6a1 commit cdb6a6f
Show file tree
Hide file tree
Showing 6 changed files with 98 additions and 5 deletions.
2 changes: 2 additions & 0 deletions assets/ArkPetsConfigDefault.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
"initial_relative_position":[0.2,0.2],
"launcher_solid_exit":true,
"logging_level":"INFO",
"opacity_dim":0.75,
"opacity_normal":1.0,
"physic_air_friction_acc":100.0,
"physic_gravity_acc":800.0,
"physic_speed_limit_x":1000.0,
Expand Down
35 changes: 35 additions & 0 deletions assets/UI/SettingsModule.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
<?import com.jfoenix.controls.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.shape.*?>
<?import java.lang.*?>
<Pane prefHeight="376.0" prefWidth="460.0" styleClass="wrapper" stylesheets="@Main.css"
xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="cn.harryh.arkpets.controllers.SettingsModule">
Expand All @@ -31,6 +33,8 @@
<JFXComboBox fx:id="configCanvasSize" prefWidth="120.0"/>
<JFXButton fx:id="configCanvasSizeHelp"/>
</HBox>
<Separator/>
<Label styleClass="config-group-title" text="渲染设置"/>
<HBox>
<Label text="高亮描边"/>
<JFXComboBox fx:id="configRenderOutline" prefWidth="120.0"/>
Expand All @@ -39,6 +43,37 @@
<Label text="背景颜色"/>
<JFXComboBox fx:id="configCanvasColor" prefWidth="120.0"/>
</HBox>
<HBox>
<Label text="不透明度"/>
<JFXButton fx:id="toggleConfigRenderOpacity" minHeight="-Infinity" minWidth="-Infinity"
mnemonicParsing="false" prefHeight="28.0" prefWidth="60.0" text="配置">
<graphic>
<AnchorPane prefHeight="25.0" prefWidth="16.0" scaleX="0.0" styleClass="btn-icon">
<SVGPath
content="m15 5h5v5h4v8h-4v5h-20v-22h15v4zm-5 12h-8v4h8v-4zm8 0h-7v4h7v-4zm-11-5h-5v4h5v-4zm9 0h-8v4h8v-4zm6 0h-5v4h5v-4zm-11-5v4h7v-4h-7zm-1 0h-8v4h8v-4zm-3-4h-5v3h5v-3zm6 0h-5v3h5v-3z"
scaleX="1.1" scaleY="1.1" AnchorPane.leftAnchor="-9.0"/>
</AnchorPane>
</graphic>
<styleClass>
<String fx:value="btn-secondary"/>
<String fx:value="btn-with-icon"/>
</styleClass>
</JFXButton>
</HBox>
<HBox fx:id="wrapperConfigRenderOpacity" managed="false" visible="false">
<VBox>
<HBox>
<Label text="正常模式下"/>
<JFXSlider fx:id="configRenderOpacityNormal"/>
<Label fx:id="configRenderOpacityNormalValue" text="0"/>
</HBox>
<HBox>
<Label text="透明模式下"/>
<JFXSlider fx:id="configRenderOpacityDim"/>
<Label fx:id="configRenderOpacityDimValue" text="0"/>
</HBox>
</VBox>
</HBox>
<Separator/>
<Label styleClass="config-group-title" text="高级设置"/>
<HBox>
Expand Down
4 changes: 4 additions & 0 deletions core/src/cn/harryh/arkpets/ArkConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,10 @@ public class ArkConfig implements Serializable {
public boolean launcher_solid_exit;
/** @since ArkPets 2.0 */ @JSONField(defaultValue = "INFO")
public String logging_level;
/** @since ArkPets 3.3 */ @JSONField(defaultValue = "0.75")
public float opacity_dim;
/** @since ArkPets 3.3 */ @JSONField(defaultValue = "1.0")
public float opacity_normal;
/** @since ArkPets 2.2 */ @JSONField(defaultValue = "800.0")
public float physic_gravity_acc;
/** @since ArkPets 2.2 */ @JSONField(defaultValue = "100.0")
Expand Down
3 changes: 2 additions & 1 deletion core/src/cn/harryh/arkpets/ArkPets.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ public void create() {
behavior = new GeneralBehavior(config, cha.animList);
cha.adjustCanvas(behavior.defaultAnim().animClip().stage);
cha.setAnimation(behavior.defaultAnim());
cha.setAlpha(config.opacity_normal);
Logger.info("Animation", "Available animation stages " + behavior.getStages());

// 3.Plane setup
Expand Down Expand Up @@ -176,7 +177,7 @@ public void changeStage() {

public void setTransparentMode(boolean enable) {
isAlwaysTransparent = enable;
cha.setAlpha(enable ? 0.75f : 1f);
cha.setAlpha(enable ? config.opacity_dim : config.opacity_normal);
}

private void changeAnimation(AnimData animData) {
Expand Down
54 changes: 50 additions & 4 deletions desktop/src/cn/harryh/arkpets/controllers/SettingsModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.util.Duration;
import org.apache.log4j.Level;
Expand All @@ -43,6 +44,18 @@ public final class SettingsModule implements Controller<ArkHomeFX> {
@FXML
private JFXComboBox<NamedItem<Integer>> configCanvasColor;
@FXML
private JFXButton toggleConfigRenderOpacity;
@FXML
private HBox wrapperConfigRenderOpacity;
@FXML
private JFXSlider configRenderOpacityNormal;
@FXML
private Label configRenderOpacityNormalValue;
@FXML
private JFXSlider configRenderOpacityDim;
@FXML
private Label configRenderOpacityDimValue;
@FXML
private JFXCheckBox configWindowTopmost;
@FXML
private JFXComboBox<String> configLoggingLevel;
Expand Down Expand Up @@ -152,11 +165,38 @@ public String getContent() {
app.config.canvas_color = String.format("#%08X", newValue.value());
app.config.save();
});
configWindowTopmost.setSelected(app.config.window_style_topmost);
configWindowTopmost.setOnAction(e -> {
app.config.window_style_topmost = configWindowTopmost.isSelected();
app.config.save();

toggleConfigRenderOpacity.setOnAction(e -> {
if (wrapperConfigRenderOpacity.isVisible())
GuiPrefabs.fadeOutNode(wrapperConfigRenderOpacity, durationFast, null);
else
GuiPrefabs.fadeInNode(wrapperConfigRenderOpacity, durationFast, null);
});
final int minOpacity = 10;
GuiComponents.SliderSetup<Integer> setupRenderOpacityDim = new GuiComponents.SimpleIntegerSliderSetup(configRenderOpacityDim);
setupRenderOpacityDim
.setDisplay(configRenderOpacityDimValue, "%d%%", "不透明度 (Opacity)")
.setRange(minOpacity, 100)
.setTicks(minOpacity, 100 - minOpacity)
.setSliderValue(app.config.opacity_dim * 100)
.setOnChanged((observable, oldValue, newValue) -> {
app.config.opacity_dim = setupRenderOpacityDim.getValidatedValue() / 100f;
app.config.save();
});
GuiComponents.SliderSetup<Integer> setupRenderOpacityNormal = new GuiComponents.SimpleIntegerSliderSetup(configRenderOpacityNormal);
setupRenderOpacityNormal
.setDisplay(configRenderOpacityNormalValue, "%d%%", "不透明度 (Opacity)")
.setRange(minOpacity, 100)
.setTicks(minOpacity, 100 - minOpacity)
.setSliderValue(app.config.opacity_normal * 100)
.setOnChanged((observable, oldValue, newValue) -> {
setupRenderOpacityDim.setRange(minOpacity, setupRenderOpacityNormal.getValidatedValue());
setupRenderOpacityDim.setDisable(minOpacity >= setupRenderOpacityNormal.getValidatedValue());
app.config.opacity_normal = setupRenderOpacityNormal.getValidatedValue() / 100f;
app.config.save();
});
setupRenderOpacityDim.setRange(minOpacity, setupRenderOpacityNormal.getValidatedValue());
setupRenderOpacityDim.setDisable(minOpacity >= setupRenderOpacityNormal.getValidatedValue());
}

private void initConfigAdvanced() {
Expand Down Expand Up @@ -257,6 +297,12 @@ else if (args.contains(Const.LogConfig.debugArg))
app.config.save();
});

configWindowTopmost.setSelected(app.config.window_style_topmost);
configWindowTopmost.setOnAction(e -> {
app.config.window_style_topmost = configWindowTopmost.isSelected();
app.config.save();
});

configWindowToolwindow.setSelected(app.config.window_style_toolwindow);
configWindowToolwindow.setOnAction(e -> {
app.config.window_style_toolwindow = configWindowToolwindow.isSelected();
Expand Down
5 changes: 5 additions & 0 deletions desktop/src/cn/harryh/arkpets/utils/GuiComponents.java
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,11 @@ public final SliderSetup<N> setSliderValue(double newValue) {
return this;
}

public final SliderSetup<N> setDisable(boolean disable) {
slider.setDisable(disable);
return this;
}

public final double getSliderValue() {
return slider.getValue();
}
Expand Down

0 comments on commit cdb6a6f

Please sign in to comment.