Add volume sliders, improve mac packaging readme

This commit is contained in:
Brendan Robert
2025-04-18 10:04:01 -05:00
parent 1df020db62
commit 2a5d20a0dd
18 changed files with 1473 additions and 1631 deletions

1
.gitignore vendored
View File

@@ -75,3 +75,4 @@ Platform/Apple/tools/jace/nbactions.xml
# Ignore temporary pom files
Platform/Apple/tools/jace/runPom.xml
Platform/Apple/tools/jace/*.log

View File

@@ -0,0 +1 @@
23

View File

@@ -1 +1 @@
17.0.3
graalvm64-23

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,83 @@
# Lawless Legends macOS Packaging Solution
## Overview
This document summarizes the successful approach for packaging the Lawless Legends application on macOS, with a focus on creating a self-contained application bundle that includes an embedded Java runtime and all necessary dependencies.
## Key Features of the Solution
### Self-Contained Application
- The application is fully self-contained with an embedded Java runtime, eliminating the need for users to install Java.
- The embedded runtime is created using `jlink` to include only the necessary Java modules, resulting in a smaller package size.
- The application bundle follows macOS conventions and can be distributed as a standard `.app` package.
### Architecture-Specific Support
- The solution correctly handles ARM64 architecture for Apple Silicon Macs.
- Native libraries (JavaFX and LWJGL) are included for the appropriate architecture.
- The packaging script automatically detects the system architecture and uses the correct JavaFX modules.
### JavaFX Integration
- JavaFX modules are correctly configured and included in the application bundle.
- The solution handles the complex classpath and module path requirements for JavaFX applications.
- Native JavaFX libraries are properly included and loaded at runtime.
### Maven-Based Dependency Management
- The solution leverages Maven for dependency management, eliminating the need to manually track and update dependencies.
- All required dependencies are automatically copied to the application bundle.
### Custom Application Icon
- The application includes a custom icon that is properly displayed in the Finder and Dock.
- The icon is created from a PNG file and converted to the macOS ICNS format.
### Single Script Approach
- A single zsh script consolidates the entire packaging process, making it easy to build and distribute the application.
- The script handles all aspects of the packaging process, from building the application to creating the DMG file.
### Distribution Readiness
- The solution creates a professional DMG disk image with installation instructions.
- The DMG includes a README file with instructions for users.
- The application can be easily distributed to end users.
### Robust Error Handling
- The script includes comprehensive error handling to ensure a smooth packaging process.
- Safety checks are implemented to prevent unintended file operations.
- Detailed logging is provided for troubleshooting.
### Modern Development Approach
- The solution uses modern Java packaging tools like `jpackage` and `jlink`.
- The approach is compatible with the latest versions of macOS and Java.
## Testing Results
The solution has been tested on macOS with both Intel and Apple Silicon processors, confirming its reliability and functionality across different hardware configurations.
## Usage Instructions
To package the Lawless Legends application:
1. Ensure you have JDK 17 or later installed.
2. Run the `package-macos.zsh` script.
3. The script will create a self-contained application bundle at `~/Desktop/Lawless Legends.app`.
4. A DMG file will also be created at `~/Desktop/Lawless Legends.dmg` for distribution.
## Future Enhancements
Potential future enhancements to the packaging solution include:
- Code signing and notarization for improved security and user experience.
- Automatic updates mechanism.
- Localization support for multiple languages.
- Enhanced error reporting and diagnostics.
## Conclusion
The Lawless Legends macOS packaging solution provides a streamlined approach to creating a professional, self-contained application that can be easily distributed to end users. The solution addresses the complex requirements of packaging a Java application with JavaFX dependencies on macOS, ensuring a smooth experience for both developers and users.

View File

@@ -962,8 +962,15 @@ log "Preparing DMG contents..."
/bin/cp -R "${TEMP_APP}" "${DMG_TEMP_DIR}/"
/bin/ln -s /Applications "${DMG_TEMP_DIR}/Applications"
# Create a README file
/bin/cat > "${DMG_TEMP_DIR}/README.txt" << EOF
# Copy README file from external source
README_SOURCE="${SCRIPT_DIR}/readme-macos.txt"
if [[ -f "${README_SOURCE}" ]]; then
log "Using external README file from ${README_SOURCE}"
/bin/cp "${README_SOURCE}" "${DMG_TEMP_DIR}/README.txt"
else
log "⚠️ External README file not found at ${README_SOURCE}. Using default text."
# Create a default README file
/bin/cat > "${DMG_TEMP_DIR}/README.txt" << EOF
Lawless Legends
--------------
@@ -974,6 +981,7 @@ To install:
This application includes its own Java runtime - no need to install Java separately.
EOF
fi
# Generate DMG file
log "Creating DMG file with hdiutil..."

View File

@@ -29,7 +29,7 @@
<plugin>
<groupId>com.gluonhq</groupId>
<artifactId>gluonfx-maven-plugin</artifactId>
<version>1.0.22</version>
<version>1.0.25</version>
<configuration>
<mainClass>jace.LawlessLegends</mainClass>
<resourcesList>
@@ -126,7 +126,7 @@
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.11</version>
<version>0.8.12</version>
<configuration>
<excludes>
<exclude>jace/assembly/AcmeCrossAssembler.class</exclude>
@@ -361,4 +361,4 @@
</properties>
</profile>
</profiles>
</project>
</project>

View File

@@ -0,0 +1,23 @@
Lawless Legends
===============
A fantasy role playing game set in the wild west!
Developed by The 8 Bit Bunch
Installation:
1. Drag the Lawless Legends app to the Applications folder
2. Double-click the app to play
3. Enjoy the adventure in Fort Miller, California, 1856!
About the Game:
The year is 1856, you have just arrived at Fort Miller, near Mariposa California.
The gold rush has now past its peak and the region is slowly being overrun with
cutthroats, thieves, murderers, and the like. There are rumors of mysterious,
unnatural things taking place behind the curtain of mountains beyond the local ridges.
Most folks are too nervous to venture far from town...even for gold.
Technical Notes:
This application includes its own Java runtime - no need to install Java separately.
For more information and updates, visit:
https://lawlesslegends.wordpress.com/
https://github.com/badvision/lawless-legends

View File

@@ -96,7 +96,10 @@ public class JaceUIController {
private ComboBox<String> musicSelection;
@FXML
private Slider speakerToggle;
private Slider musicVolumeSlider;
@FXML
private Slider sfxVolumeSlider;
private final BooleanProperty aspectRatioCorrectionEnabled = new SimpleBooleanProperty(false);
@@ -136,18 +139,37 @@ public class JaceUIController {
rootPane.requestFocus();
}));
rootPane.requestFocus();
speakerToggle.setValue(1.0);
speakerToggle.setOnMouseClicked(evt -> {
speakerEnabled = !speakerEnabled;
int desiredValue = speakerEnabled ? 1 : 0;
speakerToggle.setValue(desiredValue);
// Initialize volume sliders
musicVolumeSlider.setValue(0.5);
sfxVolumeSlider.setValue(0.5);
// Set listeners for volume changes
musicVolumeSlider.valueProperty().addListener((observable, oldValue, newValue) -> {
Emulator.withComputer(computer -> {
Motherboard.enableSpeaker = speakerEnabled;
if (computer instanceof LawlessComputer) {
LawlessHacks lawlessHacks = (LawlessHacks) ((LawlessComputer) computer).activeCheatEngine;
lawlessHacks.setMusicVolume(newValue.doubleValue());
}
});
});
sfxVolumeSlider.valueProperty().addListener((observable, oldValue, newValue) -> {
Emulator.withComputer(computer -> {
// Update SFX volume
Motherboard.enableSpeaker = newValue.doubleValue() > 0.0;
computer.motherboard.reconfigure();
if (!speakerEnabled) {
// Set volume scale on speaker
if (computer.motherboard.speaker != null) {
computer.motherboard.speaker.setVolumeScale(newValue.doubleValue());
}
// Only detach speaker if volume is zero
if (newValue.doubleValue() == 0.0) {
computer.motherboard.speaker.detach();
} else {
computer.motherboard.speaker.attach();
computer.motherboard.speaker.attach();
}
});
});

View File

@@ -100,6 +100,27 @@ public class Speaker extends Device {
public static int VOLUME = 400;
private int currentVolume = 0;
private int fadeOffAmount = 1;
/**
* Volume scaling factor (0.0 to 1.0)
*/
private double volumeScale = 0.5;
/**
* Set the speaker volume scaling factor
* @param scale Volume scale between 0.0 and 1.0
*/
public void setVolumeScale(double scale) {
volumeScale = Math.max(0.0, Math.min(1.0, scale));
}
/**
* Get the current volume scaling factor
* @return Volume scale between 0.0 and 1.0
*/
public double getVolumeScale() {
return volumeScale;
}
/**
* Manifestation of the apple speaker softswitch
*/
@@ -210,7 +231,7 @@ public class Speaker extends Device {
if (idleCycles >= MAX_IDLE_CYCLES) {
currentVolume -= fadeOffAmount;
}
playSample(level * currentVolume);
playSample((int)(level * currentVolume * volumeScale));
// Emulator.withComputer(c->c.getMotherboard().requestSpeed(this));
// Set level back to 0

View File

@@ -1,7 +1,6 @@
package jace.lawless;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
@@ -200,7 +199,21 @@ public class LawlessHacks extends Cheats {
private static MediaPlayer previousSongPlayer;
private static MediaPlayer currentSfxPlayer;
private static String currentScore = SCORE_COMMON;
// Volume control for music
private static double musicVolume = 0.5;
/**
* Set the music volume
* @param volume Volume between 0.0 and 1.0
*/
public void setMusicVolume(double volume) {
musicVolume = Math.max(0.0, Math.min(1.0, volume));
if (currentSongPlayer != null) {
currentSongPlayer.setVolume(musicVolume);
}
}
public void playSound(int soundNumber) {
boolean isMusic = soundNumber >= 0;
int track = soundNumber & 0x03f;
@@ -256,7 +269,7 @@ public class LawlessHacks extends Cheats {
// Log path
try {
return new Media(pathStr);
} catch (IOException e) {
} catch (Exception e) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, "Unable to load audio track " + pathStr, e);
return null;
}
@@ -335,8 +348,8 @@ public class LawlessHacks extends Cheats {
}
Thread effect = new Thread(() -> {
while (playbackEffect == Thread.currentThread() && player.getVolume() < 1.0) {
player.setVolume(Math.min(player.getVolume() + FADE_AMT, 1.0));
while (playbackEffect == Thread.currentThread() && player.getVolume() < musicVolume) {
player.setVolume(Math.min(player.getVolume() + FADE_AMT, musicVolume));
try {
Thread.sleep(FADE_SPEED);
} catch (InterruptedException e) {

View File

@@ -1,464 +1,278 @@
[
{
"name":"[Lcom.sun.glass.ui.Screen;"
"type":"[Lcom.sun.glass.ui.Screen;"
},
{
"name":"[Ljava.lang.String;"
"type":"[Ljava.lang.String;"
},
{
"name":"com.sun.glass.ui.Application",
"methods":[
{"name":"notifyDidBecomeActive","parameterTypes":[] },
{"name":"notifyDidFinishLaunching","parameterTypes":[] },
{"name":"notifyDidHide","parameterTypes":[] },
{"name":"notifyDidResignActive","parameterTypes":[] },
{"name":"notifyDidUnhide","parameterTypes":[] },
{"name":"notifyOpenFiles","parameterTypes":["java.lang.String[]"] },
{"name":"notifyWillBecomeActive","parameterTypes":[] },
{"name":"notifyWillFinishLaunching","parameterTypes":[] },
{"name":"notifyWillHide","parameterTypes":[] },
{"name":"notifyWillResignActive","parameterTypes":[] },
{"name":"notifyWillUnhide","parameterTypes":[] }
]
"type":"com.sun.glass.ui.Application",
"methods":[{"name":"notifyDidBecomeActive","parameterTypes":[] },{"name":"notifyDidFinishLaunching","parameterTypes":[] },{"name":"notifyDidHide","parameterTypes":[] },{"name":"notifyDidResignActive","parameterTypes":[] },{"name":"notifyDidUnhide","parameterTypes":[] },{"name":"notifyOpenFiles","parameterTypes":["java.lang.String[]"] },{"name":"notifyWillBecomeActive","parameterTypes":[] },{"name":"notifyWillFinishLaunching","parameterTypes":[] },{"name":"notifyWillHide","parameterTypes":[] },{"name":"notifyWillResignActive","parameterTypes":[] },{"name":"notifyWillUnhide","parameterTypes":[] }]
},
{
"name":"com.sun.glass.ui.CommonDialogs$ExtensionFilter",
"methods":[
{"name":"extensionsToArray","parameterTypes":[] },
{"name":"getDescription","parameterTypes":[] }
]
"type":"com.sun.glass.ui.CommonDialogs$ExtensionFilter",
"methods":[{"name":"extensionsToArray","parameterTypes":[] },{"name":"getDescription","parameterTypes":[] }]
},
{
"name":"com.sun.glass.ui.CommonDialogs$FileChooserResult",
"type":"com.sun.glass.ui.CommonDialogs$FileChooserResult",
"methods":[{"name":"<init>","parameterTypes":["java.util.List","com.sun.glass.ui.CommonDialogs$ExtensionFilter"] }]
},
{
"name":"com.sun.glass.ui.EventLoop",
"methods":[
{"name":"<init>","parameterTypes":[] },
{"name":"enter","parameterTypes":[] },
{"name":"leave","parameterTypes":["java.lang.Object"] }
]
"type":"com.sun.glass.ui.EventLoop",
"methods":[{"name":"<init>","parameterTypes":[] },{"name":"enter","parameterTypes":[] },{"name":"leave","parameterTypes":["java.lang.Object"] }]
},
{
"name":"com.sun.glass.ui.Menu",
"methods":[
{"name":"notifyMenuClosed","parameterTypes":[] },
{"name":"notifyMenuOpening","parameterTypes":[] }
]
"type":"com.sun.glass.ui.Menu",
"methods":[{"name":"notifyMenuClosed","parameterTypes":[] },{"name":"notifyMenuOpening","parameterTypes":[] }]
},
{
"name":"com.sun.glass.ui.MenuItem$Callback",
"methods":[
{"name":"action","parameterTypes":[] },
{"name":"validate","parameterTypes":[] }
]
"type":"com.sun.glass.ui.MenuItem$Callback",
"methods":[{"name":"action","parameterTypes":[] },{"name":"validate","parameterTypes":[] }]
},
{
"name":"com.sun.glass.ui.Screen",
"methods":[
{"name":"<init>","parameterTypes":["long","int","int","int","int","int","int","int","int","int","int","int","int","int","int","int","float","float","float","float"] },
{"name":"notifySettingsChanged","parameterTypes":[] }
]
"type":"com.sun.glass.ui.Screen",
"methods":[{"name":"<init>","parameterTypes":["long","int","int","int","int","int","int","int","int","int","int","int","int","int","int","int","float","float","float","float"] },{"name":"notifySettingsChanged","parameterTypes":[] },{"name":"initIDs","parameterTypes":[] },{"name":"getScreens","parameterTypes":[] }]
},
{
"name":"com.sun.glass.ui.Size",
"type":"com.sun.glass.ui.Size",
"methods":[{"name":"<init>","parameterTypes":["int","int"] }]
},
{
"name":"com.sun.glass.ui.View",
"type":"com.sun.glass.ui.View",
"fields":[{"name":"ptr"}],
"methods":[
{"name":"getAccessible","parameterTypes":[] },
{"name":"notifyDragDrop","parameterTypes":["int","int","int","int","int"] },
{"name":"notifyDragEnd","parameterTypes":["int"] },
{"name":"notifyDragEnter","parameterTypes":["int","int","int","int","int"] },
{"name":"notifyDragLeave","parameterTypes":[] },
{"name":"notifyDragOver","parameterTypes":["int","int","int","int","int"] },
{"name":"notifyInputMethod","parameterTypes":["java.lang.String","int[]","int[]","byte[]","int","int","int"] },
{"name":"notifyInputMethodCandidatePosRequest","parameterTypes":["int"] },
{"name":"notifyKey","parameterTypes":["int","int","char[]","int"] },
{"name":"notifyMenu","parameterTypes":["int","int","int","int","boolean"] },
{"name":"notifyMouse","parameterTypes":["int","int","int","int","int","int","int","boolean","boolean"] },
{"name":"notifyRepaint","parameterTypes":["int","int","int","int"] },
{"name":"notifyResize","parameterTypes":["int","int"] },
{"name":"notifyView","parameterTypes":["int"] }
]
"methods":[{"name":"getAccessible","parameterTypes":[] },{"name":"notifyDragDrop","parameterTypes":["int","int","int","int","int"] },{"name":"notifyDragEnd","parameterTypes":["int"] },{"name":"notifyDragEnter","parameterTypes":["int","int","int","int","int"] },{"name":"notifyDragLeave","parameterTypes":[] },{"name":"notifyDragOver","parameterTypes":["int","int","int","int","int"] },{"name":"notifyInputMethod","parameterTypes":["java.lang.String","int[]","int[]","byte[]","int","int","int"] },{"name":"notifyInputMethodCandidatePosRequest","parameterTypes":["int"] },{"name":"notifyKey","parameterTypes":["int","int","char[]","int"] },{"name":"notifyMenu","parameterTypes":["int","int","int","int","boolean"] },{"name":"notifyMouse","parameterTypes":["int","int","int","int","int","int","int","boolean","boolean"] },{"name":"notifyRepaint","parameterTypes":["int","int","int","int"] },{"name":"notifyResize","parameterTypes":["int","int"] },{"name":"notifyView","parameterTypes":["int"] }]
},
{
"name":"com.sun.javafx.font.coretext.CGAffineTransform",
"fields":[
{"name":"a"},
{"name":"b"},
{"name":"c"},
{"name":"d"},
{"name":"tx"},
{"name":"ty"}
],
"type":"com.sun.javafx.font.coretext.CGAffineTransform",
"fields":[{"name":"a"},{"name":"b"},{"name":"c"},{"name":"d"},{"name":"tx"},{"name":"ty"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"com.sun.javafx.font.coretext.CGPoint",
"fields":[
{"name":"x"},
{"name":"y"}
],
"type":"com.sun.javafx.font.coretext.CGPoint",
"fields":[{"name":"x"},{"name":"y"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"com.sun.javafx.font.coretext.CGRect",
"fields":[
{"name":"origin"},
{"name":"size"}
],
"type":"com.sun.javafx.font.coretext.CGRect",
"fields":[{"name":"origin"},{"name":"size"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"com.sun.javafx.font.coretext.CGSize",
"fields":[
{"name":"height"},
{"name":"width"}
],
"type":"com.sun.javafx.font.coretext.CGSize",
"fields":[{"name":"height"},{"name":"width"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"com.sun.javafx.iio.common.ImageLoaderImpl",
"type":"com.sun.javafx.iio.common.ImageLoaderImpl",
"methods":[{"name":"emitWarning","parameterTypes":["java.lang.String"] }]
},
{
"name":"com.sun.javafx.iio.jpeg.JPEGImageLoader",
"methods":[
{"name":"setInputAttributes","parameterTypes":["int","int","int","int","int","byte[]"] },
{"name":"setOutputAttributes","parameterTypes":["int","int"] },
{"name":"updateImageProgress","parameterTypes":["int"] }
]
"type":"com.sun.javafx.iio.jpeg.JPEGImageLoader",
"methods":[{"name":"setInputAttributes","parameterTypes":["int","int","int","int","int","byte[]"] },{"name":"setOutputAttributes","parameterTypes":["int","int"] },{"name":"updateImageProgress","parameterTypes":["int"] }]
},
{
"name":"com.sun.media.jfxmedia.locator.Locator",
"type":"com.sun.media.jfxmedia.locator.Locator",
"methods":[{"name":"getStringLocation","parameterTypes":[] }]
},
{
"name":"com.sun.media.jfxmedia.logging.Logger",
"methods":[
{"name":"logMsg","parameterTypes":["int","java.lang.String"] },
{"name":"logMsg","parameterTypes":["int","java.lang.String","java.lang.String","java.lang.String"] }
]
"type":"com.sun.media.jfxmedia.logging.Logger",
"methods":[{"name":"logMsg","parameterTypes":["int","java.lang.String"] },{"name":"logMsg","parameterTypes":["int","java.lang.String","java.lang.String","java.lang.String"] }]
},
{
"name":"com.sun.media.jfxmediaimpl.NativeMediaPlayer",
"methods":[
{"name":"sendAudioSpectrumEvent","parameterTypes":["double","double","boolean"] },
{"name":"sendAudioTrack","parameterTypes":["boolean","long","java.lang.String","int","java.lang.String","int","int","float"] },
{"name":"sendBufferProgressEvent","parameterTypes":["double","long","long","long"] },
{"name":"sendDurationUpdateEvent","parameterTypes":["double"] },
{"name":"sendFrameSizeChangedEvent","parameterTypes":["int","int"] },
{"name":"sendMarkerEvent","parameterTypes":["java.lang.String","double"] },
{"name":"sendNewFrameEvent","parameterTypes":["long"] },
{"name":"sendPlayerHaltEvent","parameterTypes":["java.lang.String","double"] },
{"name":"sendPlayerMediaErrorEvent","parameterTypes":["int"] },
{"name":"sendPlayerStateEvent","parameterTypes":["int","double"] },
{"name":"sendSubtitleTrack","parameterTypes":["boolean","long","java.lang.String","int","java.lang.String"] },
{"name":"sendVideoTrack","parameterTypes":["boolean","long","java.lang.String","int","int","int","float","boolean"] },
{"name":"sendWarning","parameterTypes":["int","java.lang.String"] }
]
"type":"com.sun.media.jfxmediaimpl.NativeMediaPlayer",
"methods":[{"name":"sendAudioSpectrumEvent","parameterTypes":["double","double","boolean"] },{"name":"sendAudioTrack","parameterTypes":["boolean","long","java.lang.String","int","java.lang.String","int","int","float"] },{"name":"sendBufferProgressEvent","parameterTypes":["double","long","long","long"] },{"name":"sendDurationUpdateEvent","parameterTypes":["double"] },{"name":"sendFrameSizeChangedEvent","parameterTypes":["int","int"] },{"name":"sendMarkerEvent","parameterTypes":["java.lang.String","double"] },{"name":"sendNewFrameEvent","parameterTypes":["long"] },{"name":"sendPlayerHaltEvent","parameterTypes":["java.lang.String","double"] },{"name":"sendPlayerMediaErrorEvent","parameterTypes":["int"] },{"name":"sendPlayerStateEvent","parameterTypes":["int","double"] },{"name":"sendSubtitleTrack","parameterTypes":["boolean","long","java.lang.String","int","java.lang.String"] },{"name":"sendVideoTrack","parameterTypes":["boolean","long","java.lang.String","int","int","int","float","boolean"] },{"name":"sendWarning","parameterTypes":["int","java.lang.String"] }]
},
{
"name":"com.sun.media.jfxmediaimpl.platform.osx.OSXMediaPlayer"
"type":"com.sun.media.jfxmediaimpl.platform.osx.OSXMediaPlayer"
},
{
"name":"com.sun.media.sound.DirectAudioDevice",
"type":"com.sun.media.sound.DirectAudioDevice",
"methods":[{"name":"addFormat","parameterTypes":["java.util.Vector","int","int","int","float","int","boolean","boolean"] }]
},
{
"name":"com.sun.media.sound.DirectAudioDeviceProvider$DirectAudioDeviceInfo",
"type":"com.sun.media.sound.DirectAudioDeviceProvider$DirectAudioDeviceInfo",
"methods":[{"name":"<init>","parameterTypes":["int","int","int","java.lang.String","java.lang.String","java.lang.String","java.lang.String"] }]
},
{
"name":"com.sun.media.sound.PortMixerProvider$PortMixerInfo",
"type":"com.sun.media.sound.PortMixerProvider$PortMixerInfo",
"methods":[{"name":"<init>","parameterTypes":["int","java.lang.String","java.lang.String","java.lang.String","java.lang.String"] }]
},
{
"name":"com.sun.webkit.BackForwardList",
"type":"com.sun.webkit.BackForwardList",
"methods":[{"name":"notifyChanged","parameterTypes":[] }]
},
{
"name":"com.sun.webkit.BackForwardList$Entry",
"methods":[
{"name":"<init>","parameterTypes":["long","long"] },
{"name":"notifyItemChanged","parameterTypes":[] },
{"name":"notifyItemDestroyed","parameterTypes":[] }
]
"type":"com.sun.webkit.BackForwardList$Entry",
"methods":[{"name":"<init>","parameterTypes":["long","long"] },{"name":"notifyItemChanged","parameterTypes":[] },{"name":"notifyItemDestroyed","parameterTypes":[] }]
},
{
"name":"com.sun.webkit.CursorManager",
"methods":[
{"name":"getCursorManager","parameterTypes":[] },
{"name":"getPredefinedCursorID","parameterTypes":["int"] }
]
"type":"com.sun.webkit.CursorManager",
"methods":[{"name":"getCursorManager","parameterTypes":[] },{"name":"getPredefinedCursorID","parameterTypes":["int"] }]
},
{
"name":"com.sun.webkit.FileSystem",
"methods":[
{"name":"fwkFileExists","parameterTypes":["java.lang.String"] },
{"name":"fwkMakeAllDirectories","parameterTypes":["java.lang.String"] },
{"name":"fwkPathByAppendingComponent","parameterTypes":["java.lang.String","java.lang.String"] }
]
"type":"com.sun.webkit.FileSystem",
"methods":[{"name":"fwkFileExists","parameterTypes":["java.lang.String"] },{"name":"fwkMakeAllDirectories","parameterTypes":["java.lang.String"] },{"name":"fwkPathByAppendingComponent","parameterTypes":["java.lang.String","java.lang.String"] }]
},
{
"name":"com.sun.webkit.MainThread",
"type":"com.sun.webkit.MainThread",
"methods":[{"name":"fwkScheduleDispatchFunctions","parameterTypes":[] }]
},
{
"name":"com.sun.webkit.Timer",
"methods":[
{"name":"fwkSetFireTime","parameterTypes":["double"] },
{"name":"fwkStopTimer","parameterTypes":[] }
]
"type":"com.sun.webkit.Timer",
"methods":[{"name":"fwkSetFireTime","parameterTypes":["double"] },{"name":"fwkStopTimer","parameterTypes":[] }]
},
{
"name":"com.sun.webkit.WCWidget",
"methods":[
{"name":"fwkDestroy","parameterTypes":[] },
{"name":"fwkRequestFocus","parameterTypes":[] },
{"name":"fwkSetBounds","parameterTypes":["int","int","int","int"] },
{"name":"fwkSetCursor","parameterTypes":["long"] },
{"name":"fwkSetVisible","parameterTypes":["boolean"] }
]
"type":"com.sun.webkit.WCWidget",
"methods":[{"name":"fwkDestroy","parameterTypes":[] },{"name":"fwkRequestFocus","parameterTypes":[] },{"name":"fwkSetBounds","parameterTypes":["int","int","int","int"] },{"name":"fwkSetCursor","parameterTypes":["long"] },{"name":"fwkSetVisible","parameterTypes":["boolean"] }]
},
{
"name":"com.sun.webkit.WebPage",
"methods":[
{"name":"fwkAddMessageToConsole","parameterTypes":["java.lang.String","int","java.lang.String"] },
{"name":"fwkAlert","parameterTypes":["java.lang.String"] },
{"name":"fwkCanRunBeforeUnloadConfirmPanel","parameterTypes":[] },
{"name":"fwkChooseFile","parameterTypes":["java.lang.String","boolean","java.lang.String"] },
{"name":"fwkCloseWindow","parameterTypes":[] },
{"name":"fwkConfirm","parameterTypes":["java.lang.String"] },
{"name":"fwkCreateWindow","parameterTypes":["boolean","boolean","boolean","boolean"] },
{"name":"fwkDidClearWindowObject","parameterTypes":["long","long"] },
{"name":"fwkFireLoadEvent","parameterTypes":["long","int","java.lang.String","java.lang.String","double","int"] },
{"name":"fwkFireResourceLoadEvent","parameterTypes":["long","int","int","java.lang.String","double","int"] },
{"name":"fwkFrameCreated","parameterTypes":["long"] },
{"name":"fwkFrameDestroyed","parameterTypes":["long"] },
{"name":"fwkGetPageBounds","parameterTypes":[] },
{"name":"fwkGetWindowBounds","parameterTypes":[] },
{"name":"fwkPermitAcceptResourceAction","parameterTypes":["long","java.lang.String"] },
{"name":"fwkPermitEnableScriptsAction","parameterTypes":["long","java.lang.String"] },
{"name":"fwkPermitNavigateAction","parameterTypes":["long","java.lang.String"] },
{"name":"fwkPermitNewWindowAction","parameterTypes":["long","java.lang.String"] },
{"name":"fwkPermitRedirectAction","parameterTypes":["long","java.lang.String"] },
{"name":"fwkPermitSubmitDataAction","parameterTypes":["long","java.lang.String","java.lang.String","boolean"] },
{"name":"fwkPrompt","parameterTypes":["java.lang.String","java.lang.String"] },
{"name":"fwkRemoveRequestURL","parameterTypes":["long","int"] },
{"name":"fwkRepaint","parameterTypes":["int","int","int","int"] },
{"name":"fwkRunBeforeUnloadConfirmPanel","parameterTypes":["java.lang.String"] },
{"name":"fwkScreenToWindow","parameterTypes":["com.sun.webkit.graphics.WCPoint"] },
{"name":"fwkSetCursor","parameterTypes":["long"] },
{"name":"fwkSetFocus","parameterTypes":["boolean"] },
{"name":"fwkSetRequestURL","parameterTypes":["long","int","java.lang.String"] },
{"name":"fwkSetScrollbarsVisible","parameterTypes":["boolean"] },
{"name":"fwkSetStatusbarText","parameterTypes":["java.lang.String"] },
{"name":"fwkSetTooltip","parameterTypes":["java.lang.String"] },
{"name":"fwkSetWindowBounds","parameterTypes":["int","int","int","int"] },
{"name":"fwkShowWindow","parameterTypes":[] },
{"name":"fwkTransferFocus","parameterTypes":["boolean"] },
{"name":"fwkWindowToScreen","parameterTypes":["com.sun.webkit.graphics.WCPoint"] },
{"name":"getHostWindow","parameterTypes":[] },
{"name":"getPage","parameterTypes":[] },
{"name":"getRenderTheme","parameterTypes":[] },
{"name":"setInputMethodState","parameterTypes":["boolean"] }
]
"type":"com.sun.webkit.WebPage",
"methods":[{"name":"fwkAddMessageToConsole","parameterTypes":["java.lang.String","int","java.lang.String"] },{"name":"fwkAlert","parameterTypes":["java.lang.String"] },{"name":"fwkCanRunBeforeUnloadConfirmPanel","parameterTypes":[] },{"name":"fwkChooseFile","parameterTypes":["java.lang.String","boolean","java.lang.String"] },{"name":"fwkCloseWindow","parameterTypes":[] },{"name":"fwkConfirm","parameterTypes":["java.lang.String"] },{"name":"fwkCreateWindow","parameterTypes":["boolean","boolean","boolean","boolean"] },{"name":"fwkDidClearWindowObject","parameterTypes":["long","long"] },{"name":"fwkFireLoadEvent","parameterTypes":["long","int","java.lang.String","java.lang.String","double","int"] },{"name":"fwkFireResourceLoadEvent","parameterTypes":["long","int","int","java.lang.String","double","int"] },{"name":"fwkFrameCreated","parameterTypes":["long"] },{"name":"fwkFrameDestroyed","parameterTypes":["long"] },{"name":"fwkGetPageBounds","parameterTypes":[] },{"name":"fwkGetWindowBounds","parameterTypes":[] },{"name":"fwkPermitAcceptResourceAction","parameterTypes":["long","java.lang.String"] },{"name":"fwkPermitEnableScriptsAction","parameterTypes":["long","java.lang.String"] },{"name":"fwkPermitNavigateAction","parameterTypes":["long","java.lang.String"] },{"name":"fwkPermitNewWindowAction","parameterTypes":["long","java.lang.String"] },{"name":"fwkPermitRedirectAction","parameterTypes":["long","java.lang.String"] },{"name":"fwkPermitSubmitDataAction","parameterTypes":["long","java.lang.String","java.lang.String","boolean"] },{"name":"fwkPrompt","parameterTypes":["java.lang.String","java.lang.String"] },{"name":"fwkRemoveRequestURL","parameterTypes":["long","int"] },{"name":"fwkRepaint","parameterTypes":["int","int","int","int"] },{"name":"fwkRunBeforeUnloadConfirmPanel","parameterTypes":["java.lang.String"] },{"name":"fwkScreenToWindow","parameterTypes":["com.sun.webkit.graphics.WCPoint"] },{"name":"fwkSetCursor","parameterTypes":["long"] },{"name":"fwkSetFocus","parameterTypes":["boolean"] },{"name":"fwkSetRequestURL","parameterTypes":["long","int","java.lang.String"] },{"name":"fwkSetScrollbarsVisible","parameterTypes":["boolean"] },{"name":"fwkSetStatusbarText","parameterTypes":["java.lang.String"] },{"name":"fwkSetTooltip","parameterTypes":["java.lang.String"] },{"name":"fwkSetWindowBounds","parameterTypes":["int","int","int","int"] },{"name":"fwkShowWindow","parameterTypes":[] },{"name":"fwkTransferFocus","parameterTypes":["boolean"] },{"name":"fwkWindowToScreen","parameterTypes":["com.sun.webkit.graphics.WCPoint"] },{"name":"getHostWindow","parameterTypes":[] },{"name":"getPage","parameterTypes":[] },{"name":"getRenderTheme","parameterTypes":[] },{"name":"setInputMethodState","parameterTypes":["boolean"] }]
},
{
"name":"com.sun.webkit.dom.JSObject",
"type":"com.sun.webkit.dom.JSObject",
"fields":[{"name":"UNDEFINED"}],
"methods":[{"name":"<init>","parameterTypes":["long","int"] }]
},
{
"name":"com.sun.webkit.graphics.Ref",
"methods":[
{"name":"getID","parameterTypes":[] },
{"name":"ref","parameterTypes":[] }
]
"type":"com.sun.webkit.graphics.Ref",
"methods":[{"name":"getID","parameterTypes":[] },{"name":"ref","parameterTypes":[] }]
},
{
"name":"com.sun.webkit.graphics.ScrollBarTheme",
"type":"com.sun.webkit.graphics.ScrollBarTheme",
"methods":[{"name":"getThickness","parameterTypes":[] }]
},
{
"name":"com.sun.webkit.graphics.WCFont",
"methods":[
{"name":"getAscent","parameterTypes":[] },
{"name":"getCapHeight","parameterTypes":[] },
{"name":"getDescent","parameterTypes":[] },
{"name":"getGlyphBoundingBox","parameterTypes":["int"] },
{"name":"getGlyphCodes","parameterTypes":["char[]"] },
{"name":"getGlyphWidth","parameterTypes":["int"] },
{"name":"getLineGap","parameterTypes":[] },
{"name":"getLineSpacing","parameterTypes":[] },
{"name":"getTextRuns","parameterTypes":["java.lang.String"] },
{"name":"getXHeight","parameterTypes":[] },
{"name":"hasUniformLineMetrics","parameterTypes":[] },
{"name":"hashCode","parameterTypes":[] }
]
"type":"com.sun.webkit.graphics.WCFont",
"methods":[{"name":"getAscent","parameterTypes":[] },{"name":"getCapHeight","parameterTypes":[] },{"name":"getDescent","parameterTypes":[] },{"name":"getGlyphBoundingBox","parameterTypes":["int"] },{"name":"getGlyphCodes","parameterTypes":["char[]"] },{"name":"getGlyphWidth","parameterTypes":["int"] },{"name":"getLineGap","parameterTypes":[] },{"name":"getLineSpacing","parameterTypes":[] },{"name":"getTextRuns","parameterTypes":["java.lang.String"] },{"name":"getXHeight","parameterTypes":[] },{"name":"hasUniformLineMetrics","parameterTypes":[] },{"name":"hashCode","parameterTypes":[] }]
},
{
"name":"com.sun.webkit.graphics.WCGraphicsManager",
"methods":[
{"name":"createWCPath","parameterTypes":[] },
{"name":"getGraphicsManager","parameterTypes":[] },
{"name":"getWCFont","parameterTypes":["java.lang.String","boolean","boolean","float"] }
]
"type":"com.sun.webkit.graphics.WCGraphicsManager",
"methods":[{"name":"createWCPath","parameterTypes":[] },{"name":"getGraphicsManager","parameterTypes":[] },{"name":"getWCFont","parameterTypes":["java.lang.String","boolean","boolean","float"] }]
},
{
"name":"com.sun.webkit.graphics.WCPoint",
"methods":[
{"name":"<init>","parameterTypes":["float","float"] },
{"name":"getX","parameterTypes":[] },
{"name":"getY","parameterTypes":[] }
]
"type":"com.sun.webkit.graphics.WCPoint",
"methods":[{"name":"<init>","parameterTypes":["float","float"] },{"name":"getX","parameterTypes":[] },{"name":"getY","parameterTypes":[] }]
},
{
"name":"com.sun.webkit.graphics.WCRectangle",
"fields":[
{"name":"h"},
{"name":"w"},
{"name":"x"},
{"name":"y"}
]
"type":"com.sun.webkit.graphics.WCRectangle",
"fields":[{"name":"h"},{"name":"w"},{"name":"x"},{"name":"y"}]
},
{
"name":"com.sun.webkit.graphics.WCRenderQueue",
"methods":[
{"name":"fwkAddBuffer","parameterTypes":["java.nio.ByteBuffer"] },
{"name":"fwkDisposeGraphics","parameterTypes":[] },
{"name":"refFloatArr","parameterTypes":["float[]"] },
{"name":"refIntArr","parameterTypes":["int[]"] }
]
"type":"com.sun.webkit.graphics.WCRenderQueue",
"methods":[{"name":"fwkAddBuffer","parameterTypes":["java.nio.ByteBuffer"] },{"name":"fwkDisposeGraphics","parameterTypes":[] },{"name":"refFloatArr","parameterTypes":["float[]"] },{"name":"refIntArr","parameterTypes":["int[]"] }]
},
{
"name":"com.sun.webkit.graphics.WCTextRun",
"methods":[
{"name":"getCharOffset","parameterTypes":["int"] },
{"name":"getEnd","parameterTypes":[] },
{"name":"getGlyph","parameterTypes":["int"] },
{"name":"getGlyphCount","parameterTypes":[] },
{"name":"getGlyphPosAndAdvance","parameterTypes":["int"] },
{"name":"getStart","parameterTypes":[] },
{"name":"isLeftToRight","parameterTypes":[] }
]
"type":"com.sun.webkit.graphics.WCTextRun",
"methods":[{"name":"getCharOffset","parameterTypes":["int"] },{"name":"getEnd","parameterTypes":[] },{"name":"getGlyph","parameterTypes":["int"] },{"name":"getGlyphCount","parameterTypes":[] },{"name":"getGlyphPosAndAdvance","parameterTypes":["int"] },{"name":"getStart","parameterTypes":[] },{"name":"isLeftToRight","parameterTypes":[] }]
},
{
"name":"com.sun.webkit.network.FormDataElement",
"methods":[
{"name":"fwkCreateFromByteArray","parameterTypes":["byte[]"] },
{"name":"fwkCreateFromFile","parameterTypes":["java.lang.String"] }
]
"type":"com.sun.webkit.network.FormDataElement",
"methods":[{"name":"fwkCreateFromByteArray","parameterTypes":["byte[]"] },{"name":"fwkCreateFromFile","parameterTypes":["java.lang.String"] }]
},
{
"name":"com.sun.webkit.network.NetworkContext",
"methods":[
{"name":"canHandleURL","parameterTypes":["java.lang.String"] },
{"name":"fwkGetMaximumHTTPConnectionCountPerHost","parameterTypes":[] },
{"name":"fwkLoad","parameterTypes":["com.sun.webkit.WebPage","boolean","java.lang.String","java.lang.String","java.lang.String","com.sun.webkit.network.FormDataElement[]","long"] }
]
"type":"com.sun.webkit.network.NetworkContext",
"methods":[{"name":"canHandleURL","parameterTypes":["java.lang.String"] },{"name":"fwkGetMaximumHTTPConnectionCountPerHost","parameterTypes":[] },{"name":"fwkLoad","parameterTypes":["com.sun.webkit.WebPage","boolean","java.lang.String","java.lang.String","java.lang.String","com.sun.webkit.network.FormDataElement[]","long"] }]
},
{
"name":"com.sun.webkit.network.URLLoaderBase",
"type":"com.sun.webkit.network.URLLoaderBase",
"methods":[{"name":"fwkCancel","parameterTypes":[] }]
},
{
"name":"jace.ide.Program"
"type":"jace.ide.Program"
},
{
"name":"java.io.File",
"type":"java.io.File",
"methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
},
{
"name":"java.io.InputStream",
"methods":[
{"name":"read","parameterTypes":["byte[]","int","int"] },
{"name":"skip","parameterTypes":["long"] }
]
"type":"java.io.InputStream",
"methods":[{"name":"read","parameterTypes":["byte[]","int","int"] },{"name":"skip","parameterTypes":["long"] }]
},
{
"name":"java.lang.Boolean",
"methods":[
{"name":"booleanValue","parameterTypes":[] },
{"name":"getBoolean","parameterTypes":["java.lang.String"] }
]
"type":"java.lang.Boolean",
"methods":[{"name":"booleanValue","parameterTypes":[] },{"name":"getBoolean","parameterTypes":["java.lang.String"] }]
},
{
"name":"java.lang.Class",
"methods":[
{"name":"forName","parameterTypes":["java.lang.String","boolean","java.lang.ClassLoader"] },
{"name":"isArray","parameterTypes":[] }
]
"type":"java.lang.Class",
"methods":[{"name":"forName","parameterTypes":["java.lang.String"] },{"name":"getMethod","parameterTypes":["java.lang.String", "[Ljava.lang.Class;"] },{"name":"getField","parameterTypes":["java.lang.String"] },{"name":"forName","parameterTypes":["java.lang.String", "boolean", "java.lang.ClassLoader"] },{"name":"getClassLoader","parameterTypes":[] },{"name":"getDeclaredMethod","parameterTypes":["java.lang.String", "java.lang.Class[]"] },{"name":"getDeclaredMethods","parameterTypes":[] },{"name":"getMethod","parameterTypes":["java.lang.String", "java.lang.Class[]"] },{"name":"getMethods","parameterTypes":[] }]
},
{
"name":"java.lang.ClassLoader",
"methods":[
{"name":"getPlatformClassLoader","parameterTypes":[] },
{"name":"loadClass","parameterTypes":["java.lang.String"] }
]
"type":"java.lang.ClassLoader",
"methods":[{"name":"getPlatformClassLoader","parameterTypes":[] },{"name":"loadClass","parameterTypes":["java.lang.String"] },{"name":"defineClass","parameterTypes":["java.lang.String", "byte[]", "int", "int", "java.security.ProtectionDomain"] },{"name":"findLoadedClass","parameterTypes":["java.lang.String"] },{"name":"findLibrary","parameterTypes":["java.lang.String"] },{"name":"findBuiltinLib","parameterTypes":["java.lang.String"] },{"name":"getResourceAsStream","parameterTypes":["java.lang.String"] }]
},
{
"name":"java.lang.Integer",
"methods":[
{"name":"<init>","parameterTypes":["int"] },
{"name":"intValue","parameterTypes":[] }
]
"type":"java.lang.Integer",
"methods":[{"name":"<init>","parameterTypes":["int"] },{"name":"intValue","parameterTypes":[] }]
},
{
"name":"java.lang.Long",
"type":"java.lang.Long",
"methods":[{"name":"longValue","parameterTypes":[] }]
},
{
"name":"java.lang.Number"
"type":"java.lang.Number"
},
{
"name":"java.lang.Object",
"type":"java.lang.Object",
"methods":[{"name":"getClass","parameterTypes":[] }]
},
{
"name":"java.lang.Runnable",
"type":"java.lang.Runnable",
"methods":[{"name":"run","parameterTypes":[] }]
},
{
"name":"java.lang.String",
"methods":[
{"name":"lastIndexOf","parameterTypes":["int"] },
{"name":"substring","parameterTypes":["int"] }
]
"type":"java.lang.String",
"methods":[{"name":"lastIndexOf","parameterTypes":["int"] },{"name":"substring","parameterTypes":["int"] }]
},
{
"name":"java.lang.System",
"methods":[
{"name":"getProperty","parameterTypes":["java.lang.String"] },
{"name":"setProperty","parameterTypes":["java.lang.String","java.lang.String"] }
]
"type":"java.lang.System",
"methods":[{"name":"getProperty","parameterTypes":["java.lang.String"] },{"name":"setProperty","parameterTypes":["java.lang.String","java.lang.String"] }]
},
{
"name":"java.util.ArrayList",
"type":"java.util.ArrayList",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"java.util.List",
"type":"java.util.List",
"methods":[{"name":"add","parameterTypes":["java.lang.Object"] }]
},
{
"name":"java.util.Map",
"type":"java.util.Map",
"methods":[{"name":"get","parameterTypes":["java.lang.Object"] }]
},
{
"name":"jdk.internal.loader.ClassLoaders$PlatformClassLoader"
"type":"jdk.internal.loader.ClassLoaders$PlatformClassLoader"
},
{
"name":"org.graalvm.jniutils.JNIExceptionWrapperEntryPoints",
"type":"org.graalvm.jniutils.JNIExceptionWrapperEntryPoints",
"methods":[{"name":"getClassName","parameterTypes":["java.lang.Class"] }]
},
{
"name":"sun.launcher.LauncherHelper$FXHelper",
"type":"sun.launcher.LauncherHelper$FXHelper",
"methods":[{"name":"main","parameterTypes":["java.lang.String[]"] }]
},
{
"type":"java.lang.reflect.Method",
"methods":[{"name":"invoke","parameterTypes":["java.lang.Object", "[Ljava.lang.Object;"] }]
},
{
"type":"org.lwjgl.system.JNI",
"methods":[{"name":"invokePPP","parameterTypes":["long", "long", "long"] },{"name":"invokePP","parameterTypes":["long", "long"] },{"name":"invokeP","parameterTypes":["long"] }]
},
{
"type":"com.sun.glass.ui.mac.MacApplication",
"methods":[{"name":"initIDs","parameterTypes":[] },{"name":"_initSysProps","parameterTypes":["java.lang.String", "java.lang.String"] }]
},
{
"type":"com.sun.glass.ui.mac.MacView",
"methods":[{"name":"initIDs","parameterTypes":[] }]
},
{
"type":"com.sun.prism.es2.ES2Pipeline",
"methods":[{"name":"nInitialize","parameterTypes":["java.lang.Class", "java.lang.Class", "java.lang.Class", "java.lang.Class"] }]
},
{
"type":"java.io.FileInputStream",
"methods":[{"name":"readBytes","parameterTypes":["byte[]", "int", "int"] },{"name":"close","parameterTypes":[] }]
}
]

View File

@@ -0,0 +1 @@
Args = --no-fallback -H:+ReportExceptionStackTraces --initialize-at-build-time=jace --initialize-at-build-time=javafx --initialize-at-run-time=com.sun.glass.ui.mac.MacApplication --initialize-at-run-time=com.sun.glass.ui.mac.MacCommonDialogs --initialize-at-run-time=com.sun.glass.ui.mac.MacGestureSupport --initialize-at-run-time=com.sun.glass.ui.mac.MacPasteboard --initialize-at-run-time=com.sun.glass.ui.mac.MacView --initialize-at-run-time=com.sun.javafx.font.FontConfigManager --initialize-at-run-time=com.sun.javafx.font.PrismFontFactory --initialize-at-run-time=com.sun.javafx.tk.quantum.QuantumToolkit --initialize-at-run-time=sun.font.FontManagerNativeLibrary -H:EnableURLProtocols=http,https -Dprism.targetvram=192m

View File

@@ -1,105 +1,24 @@
{
"resources":{
"includes":[
{
"pattern":".*\\.bin$"
},
{
"pattern":".*\\.bmp$"
},
{
"pattern":".*\\.css$"
},
{
"pattern":".*\\.dat$"
},
{
"pattern":".*\\.frag$"
},
{
"pattern":".*\\.fxml$"
},
{
"pattern":".*\\.gif$"
},
{
"pattern":".*\\.gls$"
},
{
"pattern":".*\\.html$"
},
{
"pattern":".*\\.jpeg$"
},
{
"pattern":".*\\.jpg$"
},
{
"pattern":".*\\.js$"
},
{
"pattern":".*\\.json$"
},
{
"pattern":".*\\.license$"
},
{
"pattern":".*\\.ogg$"
},
{
"pattern":".*\\.mtl$"
},
{
"pattern":".*\\.obj$"
},
{
"pattern":".*\\.png$"
},
{
"pattern":".*\\.raw$"
},
{
"pattern":".*\\.rom$"
},
{
"pattern":".*\\.ttf$"
},
{
"pattern":".*\\.txt$"
},
{
"pattern":".*\\.vert$"
},
{
"pattern":".*\\.xml$"
},
{
"pattern":"\\QMETA-INF/macos/x64/org/lwjgl/liblwjgl.dylib.sha1\\E"
},
{
"pattern":"\\QMETA-INF/macos/x64/org/lwjgl/openal/libopenal.dylib.sha1\\E"
},
{
"pattern":"\\QMETA-INF/macos/x64/org/lwjgl/stb/liblwjgl_stb.dylib.sha1\\E"
},
{
"pattern":"\\Qmacos/x64/org/lwjgl/liblwjgl.dylib\\E"
},
{
"pattern":"\\Qmacos/x64/org/lwjgl/openal/libopenal.dylib\\E"
},
{
"pattern":"\\Qmacos/x64/org/lwjgl/stb/liblwjgl_stb.dylib\\E"
}
]},
"bundles":[
{
"name":"com.sun.javafx.tk.quantum.QuantumMessagesBundle",
"locales":[""]
},
{
"name":"com/sun/javafx/scene/control/skin/resources/controls",
"locales":[""]
}
"resources": {
"includes": [
{"pattern": "\\QMETA-INF/services/\\E.*"},
{"pattern": "\\Qfxml/\\E.*\\.fxml$"},
{"pattern": "\\Qjace/data/\\E.*\\.png$"},
{"pattern": "\\Qjace/data/\\E.*\\.gif$"},
{"pattern": "\\Qjace/data/\\E.*\\.rom$"},
{"pattern": "\\Qjace/data/\\E.*\\.bin$"},
{"pattern": "\\Qjace/data/\\E.*\\.txt$"},
{"pattern": "\\Qjace/data/\\E.*\\.ogg$"},
{"pattern": "\\Qicons/\\E.*\\.png$"},
{"pattern": "\\Qcss/\\E.*\\.css$"},
{"pattern": "\\Qcom/sun/javafx/\\E.*"},
{"pattern": "\\Qcom/sun/prism/\\E.*"},
{"pattern": ".*\\.properties$"},
{"pattern": "META-INF/MANIFEST.MF"}
]
},
"bundles": [
{"name": "jace.lawless.Message", "locales": ["en", "en_US"]},
{"name": "com.sun.javafx.tk.quantum.QuantumMessagesBundle", "locales": ["en", "en_US"]}
]
}

View File

@@ -23,5 +23,7 @@
}
],
"lambdaCapturingTypes":[
],
"proxies":[
]
}

View File

@@ -18,8 +18,9 @@
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.StackPane?>
<?import javafx.scene.layout.TilePane?>
<?import javafx.scene.text.Font?>
<AnchorPane id="AnchorPane" fx:id="rootPane" prefHeight="384.0" prefWidth="560.0" style="-fx-background-color: black;" stylesheets="@../styles/style.css" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="jace.JaceUIController">
<AnchorPane id="AnchorPane" fx:id="rootPane" prefHeight="384.0" prefWidth="560.0" style="-fx-background-color: black;" stylesheets="@../styles/style.css" xmlns="http://javafx.com/javafx/22" xmlns:fx="http://javafx.com/fxml/1" fx:controller="jace.JaceUIController">
<children>
<StackPane fx:id="stackPane" prefHeight="384.0" prefWidth="560.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
@@ -90,7 +91,7 @@
</Button>
</children>
</TilePane>
<GridPane prefHeight="70.0" prefWidth="467.0">
<GridPane prefHeight="120.0" prefWidth="467.0">
<columnConstraints>
<ColumnConstraints halignment="RIGHT" hgrow="ALWAYS" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints halignment="LEFT" hgrow="ALWAYS" minWidth="10.0" prefWidth="100.0" />
@@ -98,9 +99,11 @@
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label alignment="CENTER_RIGHT" styleClass="musicLabel" textAlignment="RIGHT">Music:</Label>
<Label alignment="CENTER_RIGHT" styleClass="musicLabel" text="Soundtrack:" textAlignment="RIGHT">Music:</Label>
<ComboBox fx:id="musicSelection" GridPane.columnIndex="1" GridPane.hgrow="ALWAYS">
<items>
<FXCollections fx:factory="observableArrayList">
@@ -113,8 +116,18 @@
<String fx:value="8-bit Chipmusic" />
</value>
</ComboBox>
<Label alignment="CENTER_RIGHT" prefHeight="53.0" prefWidth="201.0" styleClass="musicLabel" text="SFX:" textAlignment="RIGHT" GridPane.rowIndex="1" />
<Slider fx:id="speakerToggle" blockIncrement="1.0" majorTickUnit="1.0" max="1.0" maxWidth="32.0" minWidth="32.0" minorTickCount="0" prefWidth="32.0" snapToTicks="true" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label alignment="CENTER" styleClass="musicLabel" text="Volume" textAlignment="CENTER" GridPane.columnSpan="2" GridPane.halignment="CENTER" GridPane.rowIndex="1">
<GridPane.margin>
<Insets bottom="5.0" top="10.0" />
</GridPane.margin>
<font>
<Font size="8.0" />
</font>
</Label>
<Label alignment="CENTER_RIGHT" prefHeight="53.0" prefWidth="201.0" styleClass="musicLabel" text="Music:" textAlignment="RIGHT" GridPane.rowIndex="2" />
<Slider fx:id="musicVolumeSlider" blockIncrement="0.1" majorTickUnit="0.5" max="1.0" minorTickCount="4" style="-fx-: #040;" value="1.0" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Label alignment="CENTER_RIGHT" prefHeight="53.0" prefWidth="201.0" styleClass="musicLabel" text="SFX:" textAlignment="RIGHT" GridPane.rowIndex="3" />
<Slider fx:id="sfxVolumeSlider" blockIncrement="0.1" majorTickUnit="0.5" max="1.0" minorTickCount="4" value="1.0" GridPane.columnIndex="1" GridPane.rowIndex="3" />
</children>
</GridPane>
</children>