Easter cleaning git
121
gdxapp4d-tos4/pom.xml
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>love.distributedrebirth.gdxapp4d</groupId>
|
||||
<artifactId>gdxapp4d</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>gdxapp4d-tos4</artifactId>
|
||||
<name>GDXApp⁴ᴰ-TOS⁴</name>
|
||||
<packaging>bundle</packaging>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.gdxapp4d</groupId>
|
||||
<artifactId>gdxapp4d-lib-warpme</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.gdxapp4d</groupId>
|
||||
<artifactId>gdxapp4d-lib-unicodezd</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.gdxapp4d</groupId>
|
||||
<artifactId>gdxapp4d-lib-imxmi</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.badlogicgames.gdx</groupId>
|
||||
<artifactId>gdx</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>games.spooky.gdx</groupId>
|
||||
<artifactId>gdx-nativefilechooser</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.felix</groupId>
|
||||
<artifactId>org.apache.felix.framework</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.osgi</groupId>
|
||||
<artifactId>org.osgi.service.component.annotations</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.badlogicgames.gdx</groupId>
|
||||
<artifactId>gdx-freetype</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.badlogicgames.gdx</groupId>
|
||||
<artifactId>gdx-freetype-platform</artifactId>
|
||||
<classifier>natives-desktop</classifier>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-x4o-fc18</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-mushroom-mais-mm</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eobjects.metamodel</groupId>
|
||||
<artifactId>MetaModel-csv</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eobjects.metamodel</groupId>
|
||||
<artifactId>MetaModel-jdbc</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>commons-pool</groupId>
|
||||
<artifactId>commons-pool</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eobjects.metamodel</groupId>
|
||||
<artifactId>MetaModel-xml</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mariadb.jdbc</groupId>
|
||||
<artifactId>mariadb-java-client</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.felix</groupId>
|
||||
<artifactId>maven-bundle-plugin</artifactId>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<niceManifest>true</niceManifest>
|
||||
<instructions>
|
||||
<_donotcopy>(.git)</_donotcopy>
|
||||
<Import-Package>org.osgi.framework,org.osgi.service.packageadmin,org.osgi.service.url,org.osgi.service.startlevel,org.osgi.util.tracker,*</Import-Package>
|
||||
<Export-Package>
|
||||
${tos4.packages},
|
||||
${mmdoc.packages}
|
||||
</Export-Package>
|
||||
<Bundle-Activator>love.distributedrebirth.gdxapp4d.tos4.GDXAppTos4Activator</Bundle-Activator>
|
||||
<Bundle-Vendor>distributedrebirth.love</Bundle-Vendor>
|
||||
</instructions>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,157 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.osgi.framework.BundleException;
|
||||
import org.osgi.framework.launch.Framework;
|
||||
|
||||
import com.badlogic.gdx.ApplicationListener;
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.Screen;
|
||||
import com.badlogic.gdx.utils.ScreenUtils;
|
||||
|
||||
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxTerminal;
|
||||
import net.spookygames.gdx.nativefilechooser.NativeFileChooser;
|
||||
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.ᔆᣖᑊᒄᓫᣗ.BãßBȍőnSpiderWireFly注;
|
||||
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.ᔆᣖᑊᒄᓫᣗ.BãßBȍőnSpiderWire注;
|
||||
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᔿᓑᔿᔿᔋᐝᣚ.BãßᛗᚢᛗᛗᛉVū́ǘrChaliceEnumShot𓄯;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒢᔿᕽ.Vū́ǘrBȍőnSupportꞱᴿᴳᴮ;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒢᔿᕽ.ᘁᓑᓑᣗ.Vū́ǘrAttributeStringᴶᴹˣ;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒢᔿᕽ.ᘁᓑᓑᣗ.Vū́ǘrBurnCounterᴶᴹˣ;
|
||||
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᒢℭỗᶇṧⱦᶏꬼȶʂ;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
//@BãßBȍőnDuytsFlüstern注(purpose = "Main loop render dispatcher and bootup.")
|
||||
public enum GDXAppTos4 implements BãßᛗᚢᛗᛗᛉVū́ǘrChaliceEnumShot𓄯<GDXAppTos4>, ApplicationListener, SystemGdxTerminal {
|
||||
INSTANCE;
|
||||
|
||||
private Screen screen;
|
||||
private Framework systemBundle;
|
||||
private GDXAppTos4Activator systemActivator;
|
||||
private Map<Class<? extends Screen>,Screen> screens;
|
||||
|
||||
@BãßBȍőnSpiderWire注(paint = Vū́ǘrBȍőnSupportꞱᴿᴳᴮ.ẞassPaint.ꞱBurnWireFly.class)
|
||||
@BãßBȍőnSpiderWireFly注(eye = "selectScreenCounter")
|
||||
private Vū́ǘrBurnCounterᴶᴹˣ selectScreenCounter;
|
||||
|
||||
@BãßBȍőnSpiderWire注(paint = Vū́ǘrBȍőnSupportꞱᴿᴳᴮ.ẞassPaint.ꞱAttributeWireFly.class)
|
||||
@BãßBȍőnSpiderWireFly注(eye = "startupArgs")
|
||||
private Vū́ǘrAttributeStringᴶᴹˣ startupArgs;
|
||||
|
||||
private GDXAppTos4() {
|
||||
亞ᶦᶦᶦ.thisʸᴰᐧᐧᶜᵒⁿˢᵗʳᵘᶜᵗᵒʳ(thisᵀᴮᵒⁿᵉ());
|
||||
}
|
||||
|
||||
public void BãßInit(List<String> args, int viewWidth, int viewHeight, NativeFileChooser fileChooser) {
|
||||
startupArgs.setValue(args.stream().collect(Collectors.joining(ᒢℭỗᶇṧⱦᶏꬼȶʂ.STRᣟᐧᣟSPACE)));
|
||||
screens = new HashMap<>();
|
||||
systemActivator = new GDXAppTos4Activator();
|
||||
systemActivator.BãßInit(args, viewWidth, viewHeight, fileChooser, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void create() {
|
||||
systemBundle = GDXAppTos4Startup.init(this, systemActivator);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resize(int width, int height) {
|
||||
if (screen != null) {
|
||||
screen.resize(width, height);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render() {
|
||||
ScreenUtils.clear(0f, 0f, 0f, 1f, true);
|
||||
if (screen != null) {
|
||||
screen.render(Gdx.graphics.getDeltaTime());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pause() {
|
||||
if (screen != null) {
|
||||
screen.pause();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resume() {
|
||||
if (screen != null) {
|
||||
screen.resume();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
this.screen = null;
|
||||
for (Screen screen:screens.values()) {
|
||||
screen.dispose();
|
||||
}
|
||||
try {
|
||||
systemBundle.stop();
|
||||
} catch (BundleException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registrateScreen(Screen screen) {
|
||||
screens.put(screen.getClass(), screen);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disposeScreen(Screen screen) {
|
||||
screens.remove(screen.getClass());
|
||||
screen.dispose();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public <T extends Screen> T selectScreen(Class<T> screenClass) {
|
||||
Screen screen = screens.get(screenClass);
|
||||
if (screen == null) {
|
||||
throw new NullPointerException("Unknow screen: "+screenClass);
|
||||
}
|
||||
if (this.screen != null) {
|
||||
this.screen.hide();
|
||||
}
|
||||
this.screen = screen;
|
||||
this.screen.show();
|
||||
this.screen.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
|
||||
selectScreenCounter.increment();
|
||||
return (T)screen;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,548 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Hashtable;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.osgi.framework.BundleActivator;
|
||||
import org.osgi.framework.BundleContext;
|
||||
import org.osgi.framework.BundleException;
|
||||
import org.osgi.framework.InvalidSyntaxException;
|
||||
import org.osgi.framework.ServiceReference;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.x4o.xml.io.X4OConnectionException;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import com.badlogic.gdx.Application;
|
||||
import com.badlogic.gdx.ApplicationLogger;
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
|
||||
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeFontParameter;
|
||||
|
||||
import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpBase;
|
||||
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxBootArgs;
|
||||
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxBootReadyListener;
|
||||
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxFont;
|
||||
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxLog;
|
||||
import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpSea;
|
||||
import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpShip;
|
||||
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxTerminal;
|
||||
import love.distributedrebirth.warpme.Warpᵐᵉ;
|
||||
import love.distributedrebirth.warpme.hash.WaterShotAddict;
|
||||
import love.distributedrebirth.warpme.sea.WaterOcean;
|
||||
import love.distributedrebirth.warpme.sea.WaterOceanDriver;
|
||||
import love.distributedrebirth.warpme.sea.WaterSeaChain;
|
||||
import love.distributedrebirth.warpme.sea.WaterSeaMagic;
|
||||
import love.distributedrebirth.warpme.ship.WaterDevice;
|
||||
import love.distributedrebirth.warpme.ship.WaterDeviceDriver;
|
||||
import net.spookygames.gdx.nativefilechooser.NativeFileChooser;
|
||||
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.Bãß;
|
||||
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒃᐤᣔᐪ.BãßBȍőnBőatWind;
|
||||
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒃᐤᣔᐪ.BãßBȍőnBőatWindKnots;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public class GDXAppTos4Activator implements BundleActivator {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(GDXAppTos4Activator.class);
|
||||
private List<String> args;
|
||||
private int viewWidth;
|
||||
private int viewHeight;
|
||||
private NativeFileChooser fileChooser;
|
||||
private File hyperdriveHome;
|
||||
private File warpshipHome;
|
||||
private boolean startError;
|
||||
private BitmapFont gdxFont;
|
||||
private Properties localOverrides;
|
||||
private WaterDevice warpshipDevice;
|
||||
private SystemGdxTerminal systemGdxTerminal;
|
||||
private GDXAppTos4BootListener bootScreen;
|
||||
private List<SystemGdxBootReadyListener> bootReadyListeners = new ArrayList<>();
|
||||
|
||||
private static final String HYPERDRIVE_HOME = "Hyperdrive";
|
||||
private static final String WARPSHIP_HOME = "Warpship";
|
||||
|
||||
public GDXAppTos4Activator() {
|
||||
startError = false;
|
||||
}
|
||||
|
||||
public void BãßInit(List<String> args, int viewWidth, int viewHeight,NativeFileChooser fileChooser, SystemGdxTerminal systemGdxTerminal) {
|
||||
this.args = args;
|
||||
this.viewWidth = viewWidth;
|
||||
this.viewHeight = viewHeight;
|
||||
this.fileChooser = fileChooser;
|
||||
this.systemGdxTerminal = systemGdxTerminal;
|
||||
}
|
||||
|
||||
public void setBootListener(GDXAppTos4BootListener bootScreen) {
|
||||
this.bootScreen = bootScreen;
|
||||
}
|
||||
|
||||
public void fireBootCompleted() {
|
||||
for (SystemGdxBootReadyListener listener: bootReadyListeners) {
|
||||
listener.bootCompleted();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean hasStartError() {
|
||||
return startError;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop(final BundleContext context) {
|
||||
gdxFont.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(final BundleContext context) {
|
||||
bootScreen.bootLine("Mecca System eXtension superscript Four");
|
||||
bootScreen.bootLine("tos4: starting...");
|
||||
bootScreen.bootLine("init-cpus: "+Runtime.getRuntime().availableProcessors());
|
||||
bootScreen.bootLine("free-memory: 0x"+Long.toHexString(Runtime.getRuntime().freeMemory()));
|
||||
|
||||
BãßBȍőnBőatWindKnots harbor = Bãß.أَكْبَرײꣻײالله.harborᴮʳᵉᵉᶻᵉ(BãßBȍőnBőatWind.SAILOR_MOON_SKIRT_DUSTER);
|
||||
bootScreen.bootLine("harbor: solar-winds="+harbor.getSolarWinds().size()+" storm-troopers="+harbor.getStormTroopers());
|
||||
|
||||
boolean useLocal = args.contains("use-local");
|
||||
|
||||
warpshipHome = new File(".", WARPSHIP_HOME);
|
||||
if (!warpshipHome.exists()) {
|
||||
bootScreen.bootLineError("ERROR: No Warpship home.");
|
||||
startError = true;
|
||||
return;
|
||||
}
|
||||
|
||||
hyperdriveHome = new File(warpshipHome, HYPERDRIVE_HOME);
|
||||
if (!hyperdriveHome.exists()) {
|
||||
bootScreen.bootLineError("ERROR: No Hyperdrive home.");
|
||||
startError = true;
|
||||
return;
|
||||
}
|
||||
|
||||
File warpShip = new File(warpshipHome, Warpᵐᵉ.WARP_SHIP);
|
||||
bootScreen.bootLine("warp-ship: "+warpShip);
|
||||
if (!warpShip.exists()) {
|
||||
bootScreen.bootLineError("ERROR: No warp-ship.xml found.");
|
||||
startError = true;
|
||||
return;
|
||||
}
|
||||
try {
|
||||
warpshipDevice = WaterDeviceDriver.newInstance().createReader().readFile(warpShip);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
bootScreen.bootLineError("ERROR: "+e.getMessage());
|
||||
startError = true;
|
||||
return;
|
||||
}
|
||||
bootScreen.bootLine("warp-engine: "+warpshipDevice.theShip().getName());
|
||||
|
||||
localOverrides = new Properties();
|
||||
if (useLocal) {
|
||||
File localOverride = new File("local-override.xml");
|
||||
if (localOverride.exists()) {
|
||||
try {
|
||||
localOverrides.loadFromXML(new FileInputStream(localOverride));
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
bootScreen.bootLine("use-local: local-override.xml loaded.");
|
||||
} else {
|
||||
bootScreen.bootLine("use-local: local-override.xml not found.");
|
||||
}
|
||||
}
|
||||
|
||||
SystemWarpShipImpl systemWarpShip = new SystemWarpShipImpl();
|
||||
|
||||
context.registerService(SystemWarpBase.class.getName(), new SystemWarpBaseImpl(), new Hashtable<String, String>());
|
||||
context.registerService(SystemWarpShip.class.getName(), systemWarpShip, new Hashtable<String, String>());
|
||||
|
||||
SystemGdxLogImpl systemGdxLog = new SystemGdxLogImpl();
|
||||
Gdx.app.setLogLevel(Application.LOG_DEBUG);
|
||||
Gdx.app.setApplicationLogger(systemGdxLog);
|
||||
|
||||
List<SystemWarpSea> registratedSeas = new ArrayList<>();
|
||||
int result = 0;
|
||||
try {
|
||||
result = systemWarpShip.loadWaterOcean(context, registratedSeas, warpshipDevice.theShip().getEngine(), v -> bootScreen.bootLine(v));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
bootScreen.bootLineError("ERROR: "+e.getMessage());
|
||||
startError = true;
|
||||
return;
|
||||
}
|
||||
if (result > 0) {
|
||||
bootScreen.bootLineError("tos4: FAILURE BOOT ABORTED");
|
||||
startError = true;
|
||||
return;
|
||||
}
|
||||
bootScreen.bootLine("tos4: chains resolved.");
|
||||
|
||||
List<File> fonts = systemWarpShip.searchMagic(context, "application/x-font-ttf-plane0");
|
||||
File systemFont = fonts.get(0);
|
||||
FreeTypeFontParameter parameter = new FreeTypeFontParameter();
|
||||
parameter.characters = FreeTypeFontGenerator.DEFAULT_CHARS + getRangeUnicodeUsed();
|
||||
parameter.size = 14;
|
||||
Gdx.app.postRunnable(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.absolute(systemFont.getAbsolutePath()));
|
||||
gdxFont = generator.generateFont(parameter);
|
||||
}
|
||||
});
|
||||
while (gdxFont == null) {
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
} catch (InterruptedException ignored) {
|
||||
}
|
||||
}
|
||||
bootScreen.bootLine("gdx-font: "+parameter.characters.length()+" glyphs loaded.");
|
||||
|
||||
context.registerService(SystemGdxFont.class.getName(), new SystemGdxFontImpl(gdxFont), new Hashtable<String, String>());
|
||||
context.registerService(SystemGdxLog.class.getName(), systemGdxLog, new Hashtable<String, String>());
|
||||
context.registerService(SystemGdxBootArgs.class.getName(), new SystemGdxBootArgsImpl(), new Hashtable<String, String>());
|
||||
context.registerService(SystemGdxTerminal.class.getName(), systemGdxTerminal, new Hashtable<String, String>());
|
||||
|
||||
try {
|
||||
systemWarpShip.loadBundles(context, registratedSeas);
|
||||
} catch (BundleException e) {
|
||||
e.printStackTrace();
|
||||
systemGdxTerminal.selectScreen(GDXAppTos4BootScreen.class);
|
||||
bootScreen.bootLineError("ERROR: "+e.getMessage());
|
||||
startError = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private static String getRangeUnicodeUsed() {
|
||||
StringBuilder buf = new StringBuilder();
|
||||
buf.append("©Δ∞ 仙上主天");
|
||||
buf.append("@Ω仙⁴ ˧꜏⋇꜊꜔ ⁴ﷲΩ@");
|
||||
buf.append("בְּרֵאשִׁית :o: יְסוֺד :o: יִשְׂרָאֵל");
|
||||
buf.append("⁰¹²³⁴⁵⁶⁷⁸⁹");
|
||||
buf.append("ᵃᵇᶜᵈᵉᶠᵍʰᶦʲᵏˡᵐⁿᵒᵖᑫʳˢᵗᵘᵛʷˣʸᶻ");
|
||||
buf.append("BãßBȍőnꝐŕḯṿª₮ḕ注");
|
||||
for (int c=0x0100;c<=0x0200;c++) {
|
||||
buf.append(""+(char)c);
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
public class SystemWarpSeaImpl implements SystemWarpSea {
|
||||
|
||||
private final String warpKey;
|
||||
private final File warpHome;
|
||||
private final WaterOcean warpSea;
|
||||
|
||||
public SystemWarpSeaImpl(String warpKey, File warpHome, WaterOcean warpSea) {
|
||||
this.warpKey = warpKey;
|
||||
this.warpHome = warpHome;
|
||||
this.warpSea = warpSea;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getWarpKey() {
|
||||
return warpKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public File getWarpHome() {
|
||||
return warpHome;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WaterOcean getWarpSea() {
|
||||
return warpSea;
|
||||
}
|
||||
}
|
||||
|
||||
public class SystemWarpBaseImpl implements SystemWarpBase {
|
||||
|
||||
@Override
|
||||
public File getHyperdriveHome() {
|
||||
return hyperdriveHome;
|
||||
}
|
||||
|
||||
@Override
|
||||
public File getWarpshipHome() {
|
||||
return warpshipHome;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class SystemGdxBootArgsImpl implements SystemGdxBootArgs {
|
||||
|
||||
@Override
|
||||
public boolean isWarpCoreNoLock() {
|
||||
return args.contains("warpcore-nolock");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getWindowWidth() {
|
||||
return viewWidth;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getWindowHeight() {
|
||||
return viewHeight;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NativeFileChooser getFileChooser() {
|
||||
return fileChooser;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shutdown() {
|
||||
Gdx.app.exit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBootReadyListener(SystemGdxBootReadyListener listener) {
|
||||
bootReadyListeners.add(listener);
|
||||
}
|
||||
}
|
||||
|
||||
public class SystemWarpShipImpl implements SystemWarpShip {
|
||||
|
||||
@Override
|
||||
public WaterDevice getWarpShip() {
|
||||
return warpshipDevice;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int loadWaterOcean(BundleContext context,List<SystemWarpSea> registratedSeas, String key, Consumer<String> logger)
|
||||
throws IOException, InterruptedException, X4OConnectionException, SAXException {
|
||||
File waterHome;
|
||||
String override = localOverrides.getProperty(key);
|
||||
if (override == null) {
|
||||
waterHome = new File(hyperdriveHome, key);
|
||||
if (!waterHome.exists()) {
|
||||
waterHome.mkdir();
|
||||
executeHyperdrive("drives", "download", key);
|
||||
}
|
||||
String infoResult = executeHyperdrive("drives", "mirror", key, waterHome.getAbsolutePath());
|
||||
logger.accept(infoResult);
|
||||
// if (!infoResult.startsWith("Drive Info")) {
|
||||
// logger.accept("ERROR: Couldn't get info on: "+waterHome);
|
||||
// return 1;
|
||||
// }
|
||||
} else {
|
||||
waterHome = new File(override);
|
||||
}
|
||||
LOG.debug("loadWaterOcean key={} home={}",key, waterHome);
|
||||
|
||||
File waterHash = new File(waterHome, Warpᵐᵉ.WARP_HASH);
|
||||
if (!waterHash.exists()) {
|
||||
logger.accept("ERROR: Missing file: "+waterHash);
|
||||
return 1;
|
||||
}
|
||||
WaterShotAddict addict = new WaterShotAddict();
|
||||
try {
|
||||
if (!addict.validateWarpChainLink(waterHome)) {
|
||||
logger.accept("ERROR: Invalid hash in: "+waterHash);
|
||||
return 1;
|
||||
}
|
||||
} catch (NoSuchAlgorithmException | X4OConnectionException | SAXException | IOException e) {
|
||||
e.printStackTrace();
|
||||
logger.accept("ERROR: "+e.getMessage());
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
File waterSea = new File(waterHome, Warpᵐᵉ.WARP_SEA);
|
||||
if (!waterSea.exists()) {
|
||||
logger.accept("ERROR: Missing file: "+waterSea);
|
||||
return 1;
|
||||
}
|
||||
WaterOcean ocean = WaterOceanDriver.newInstance().createReader().readFile(waterSea);
|
||||
logger.accept("water-ocean: "+key+" ("+ocean.theWater().getName()+")");
|
||||
|
||||
SystemWarpSeaImpl sea = new SystemWarpSeaImpl(key, waterHome, ocean);
|
||||
Hashtable<String, String> props = new Hashtable<String, String>();
|
||||
props.put(SystemWarpSea.NAME_PROPERTY, ocean.theWater().getName());
|
||||
context.registerService(SystemWarpSea.class.getName(), sea, props);
|
||||
registratedSeas.add(sea);
|
||||
|
||||
int result = 0;
|
||||
for (WaterSeaChain chain: ocean.theWater().getSeaChains()) {
|
||||
result += loadWaterOcean(context, registratedSeas, chain.getKey(), logger);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private String executeHyperdrive(String...cmd) throws IOException, InterruptedException {
|
||||
ProcessBuilder builder = new ProcessBuilder();
|
||||
builder.command(cmd);
|
||||
builder.directory(new File(System.getProperty("user.home")));
|
||||
Process process = builder.start();
|
||||
StringBuilder buf = new StringBuilder();
|
||||
try(BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
|
||||
String line;
|
||||
while ((line = input.readLine()) != null) {
|
||||
buf.append(line);
|
||||
}
|
||||
}
|
||||
process.waitFor();
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadBundles(BundleContext context, List<SystemWarpSea> registratedSeas) throws BundleException {
|
||||
for (SystemWarpSea service : registratedSeas) {
|
||||
String key = service.getWarpKey();
|
||||
File waterHome = service.getWarpHome();
|
||||
for (WaterSeaMagic magic:service.getWarpSea().theWater().getSeaMagics()) {
|
||||
if ("application/vnd.osgi.bundle".equals(magic.getMime())) {
|
||||
magic.setMime("application/vnd.osgi.bundle.loaded"); // TODO: HACK for now to not load again
|
||||
String overrideBundleKey = key + "." + magic.getFile();
|
||||
String overrideBundle = localOverrides.getProperty(overrideBundleKey);
|
||||
if (overrideBundle == null) {
|
||||
LOG.debug("loadBundles: "+waterHome.getAbsolutePath()+"/"+magic.getFile());
|
||||
GDXAppTos4BootFactory.installAndStartBundles(context, "reference:file:"+waterHome.getAbsolutePath()+"/"+magic.getFile());
|
||||
} else {
|
||||
LOG.debug("loadBundles: "+overrideBundle);
|
||||
GDXAppTos4BootFactory.installAndStartBundles(context, "reference:file:"+overrideBundle);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<File> searchMagic(BundleContext context, String mimeType) {
|
||||
Collection<ServiceReference<SystemWarpSea>> oceansRefs = null;
|
||||
try {
|
||||
oceansRefs = context.getServiceReferences(SystemWarpSea.class, "(warp.sea.name=*)");
|
||||
} catch (InvalidSyntaxException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
List<File> result = new ArrayList<>();
|
||||
for (ServiceReference<SystemWarpSea> serviceRef : oceansRefs) {
|
||||
SystemWarpSea service = context.getService(serviceRef);
|
||||
File waterHome = service.getWarpHome();
|
||||
for (WaterSeaMagic magic:service.getWarpSea().theWater().getSeaMagics()) {
|
||||
if (mimeType.equals(magic.getMime())) {
|
||||
File file = new File(waterHome, magic.getFile());
|
||||
result.add(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public static class SystemGdxLogImpl implements SystemGdxLog, ApplicationLogger {
|
||||
|
||||
@Override
|
||||
public void infoTag(String tag, String message, Object...args) {
|
||||
LoggerFactory.getLogger(tag).info(message, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void infoTag(String tag, String message, Throwable exception) {
|
||||
LoggerFactory.getLogger(tag).info(message, exception);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void debugTag(String tag, String message, Object...args) {
|
||||
LoggerFactory.getLogger(tag).debug(message, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void debugTag(String tag, String message, Throwable exception) {
|
||||
LoggerFactory.getLogger(tag).debug(message, exception);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void errorTag(String tag, String message, Object...args) {
|
||||
LoggerFactory.getLogger(tag).error(message, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void errorTag(String tag, String message, Throwable exception) {
|
||||
LoggerFactory.getLogger(tag).error(message, exception);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void log(String tag, String message) {
|
||||
infoTag(tag, message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void log(String tag, String message, Throwable exception) {
|
||||
infoTag(tag, message, exception);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void error(String tag, String message) {
|
||||
errorTag(tag, message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void error(String tag, String message, Throwable exception) {
|
||||
errorTag(tag, message, exception);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void debug(String tag, String message) {
|
||||
debugTag(tag, message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void debug(String tag, String message, Throwable exception) {
|
||||
debugTag(tag, message, exception);
|
||||
}
|
||||
}
|
||||
|
||||
public static class SystemGdxFontImpl implements SystemGdxFont {
|
||||
|
||||
private final BitmapFont font;
|
||||
|
||||
public SystemGdxFontImpl(BitmapFont font) {
|
||||
this.font = font;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BitmapFont getFont() {
|
||||
return font;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,356 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.ServiceLoader;
|
||||
|
||||
import org.osgi.framework.Bundle;
|
||||
import org.osgi.framework.BundleContext;
|
||||
import org.osgi.framework.BundleException;
|
||||
import org.osgi.framework.Constants;
|
||||
import org.osgi.framework.launch.Framework;
|
||||
import org.osgi.framework.launch.FrameworkFactory;
|
||||
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public class GDXAppTos4BootFactory {
|
||||
|
||||
public static void installAndStartBundles(BundleContext bundleContext, String... bundleLocations) throws BundleException {
|
||||
for (String location : bundleLocations) {
|
||||
Bundle addition = bundleContext.installBundle(location);
|
||||
addition.start();
|
||||
}
|
||||
}
|
||||
|
||||
public static Framework createFramework() {
|
||||
return createFramework(buildConfig());
|
||||
}
|
||||
|
||||
public static Framework createFramework(Map<String, String> config) {
|
||||
ServiceLoader<FrameworkFactory> factoryLoader = ServiceLoader.load(FrameworkFactory.class);
|
||||
for (FrameworkFactory factory : factoryLoader) {
|
||||
return factory.newFramework(config);
|
||||
}
|
||||
throw new IllegalStateException("Unable to load FrameworkFactory service.");
|
||||
}
|
||||
|
||||
public static Map<String, String> buildConfig() {
|
||||
final File cachedir = createCacheDir();
|
||||
Map<String, String> configMap = new HashMap<String, String>();
|
||||
configMap.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA,
|
||||
"love.distributedrebirth.gdxapp4d.tos4.service,"+
|
||||
"com.badlogic.gdx,"+
|
||||
"com.badlogic.gdx.assets,"+
|
||||
"com.badlogic.gdx.assets.loaders,"+
|
||||
"com.badlogic.gdx.assets.loaders.resolvers,"+
|
||||
"com.badlogic.gdx.audio,"+
|
||||
"com.badlogic.gdx.files,"+
|
||||
"com.badlogic.gdx.graphics,"+
|
||||
"com.badlogic.gdx.graphics.g2d,"+
|
||||
"com.badlogic.gdx.graphics.g2d.freetype,"+
|
||||
"com.badlogic.gdx.graphics.g3d,"+
|
||||
"com.badlogic.gdx.graphics.g3d.attributes,"+
|
||||
"com.badlogic.gdx.graphics.g3d.decals,"+
|
||||
"com.badlogic.gdx.graphics.g3d.environment,"+
|
||||
"com.badlogic.gdx.graphics.g3d.loader,"+
|
||||
"com.badlogic.gdx.graphics.g3d.model,"+
|
||||
"com.badlogic.gdx.graphics.g3d.model.data,"+
|
||||
"com.badlogic.gdx.graphics.g3d.particles,"+
|
||||
"com.badlogic.gdx.graphics.g3d.particles.bactches,"+
|
||||
"com.badlogic.gdx.graphics.g3d.particles.emitters,"+
|
||||
"com.badlogic.gdx.graphics.g3d.particles.influencers,"+
|
||||
"com.badlogic.gdx.graphics.g3d.particles.renderers,"+
|
||||
"com.badlogic.gdx.graphics.g3d.particles.values,"+
|
||||
"com.badlogic.gdx.graphics.g3d.shaders,"+
|
||||
"com.badlogic.gdx.graphics.g3d.utils,"+
|
||||
"com.badlogic.gdx.graphics.g3d.utils.shapebuilders,"+
|
||||
"com.badlogic.gdx.graphics.glutils,"+
|
||||
"com.badlogic.gdx.graphics.profiling,"+
|
||||
"com.badlogic.gdx.input,"+
|
||||
"com.badlogic.gdx.maps,"+
|
||||
"com.badlogic.gdx.maps.objects,"+
|
||||
"com.badlogic.gdx.maps.tiled,"+
|
||||
"com.badlogic.gdx.maps.tiled.objects,"+
|
||||
"com.badlogic.gdx.maps.tiled.renderers,"+
|
||||
"com.badlogic.gdx.maps.tiled.tiles,"+
|
||||
"com.badlogic.gdx.math,"+
|
||||
"com.badlogic.gdx.math.collision,"+
|
||||
"com.badlogic.gdx.net,"+
|
||||
"com.badlogic.gdx.scenes.scene2d,"+
|
||||
"com.badlogic.gdx.scenes.scene2d.actions,"+
|
||||
"com.badlogic.gdx.scenes.scene2d.ui,"+
|
||||
"com.badlogic.gdx.scenes.scene2d.utils,"+
|
||||
"com.badlogic.gdx.utils,"+
|
||||
"com.badlogic.gdx.utils.async,"+
|
||||
"com.badlogic.gdx.utils.compression,"+
|
||||
"com.badlogic.gdx.utils.compression.lz,"+
|
||||
"com.badlogic.gdx.utils.compression.lzma,"+
|
||||
"com.badlogic.gdx.utils.compression.rangecoder,"+
|
||||
"com.badlogic.gdx.utils.reflect,"+
|
||||
"com.badlogic.gdx.utils.viewport,"+
|
||||
"imgui,"+
|
||||
"imgui.flag,"+
|
||||
"imgui.glfw,"+
|
||||
"imgui.gl3,"+
|
||||
"imgui.type,"+
|
||||
"net.spookygames.gdx.nativefilechooser,"+
|
||||
"org.x4o.fc18,"+
|
||||
"org.x4o.fc18.cake2,"+
|
||||
"org.x4o.fc18.cake2.clk1k,"+
|
||||
"org.x4o.fc18.cake2.flag4,"+
|
||||
"org.x4o.fc18.cake2.gram5,"+
|
||||
"org.x4o.fc18.cake2.pie9c,"+
|
||||
"org.x4o.fc18.cake2.pie9d,"+
|
||||
"org.x4o.fc18.cake2.zero33,"+
|
||||
"org.x4o.fc18.cake2.zero33.dec1,"+
|
||||
"org.x4o.fc18.cake2.zero33.vt06,"+
|
||||
"org.x4o.fc18.octal8,"+
|
||||
"org.x4o.fc18.zion7,"+
|
||||
"org.x4o.sax3,"+
|
||||
"org.x4o.sax3.io,"+
|
||||
"org.x4o.sax3.io.xdbx,"+
|
||||
"org.x4o.maisdoc,"+
|
||||
"org.x4o.maisdoc.flake,"+
|
||||
"org.x4o.maisdoc.model,"+
|
||||
"org.x4o.maisdoc.theme,"+
|
||||
"org.x4o.maisdoc.theme.base,"+
|
||||
"org.x4o.maisdoc.theme.jdk6,"+
|
||||
"org.x4o.maisdoc.theme.jdk7,"+
|
||||
"org.x4o.xml,"+
|
||||
"org.x4o.xml.conv,"+
|
||||
"org.x4o.xml.conv.text,"+
|
||||
"org.x4o.xml.el,"+
|
||||
"org.x4o.xml.eld,"+
|
||||
"org.x4o.xml.eld.doc,"+
|
||||
"org.x4o.xml.eld.lang,"+
|
||||
"org.x4o.xml.eld.xsd,"+
|
||||
"org.x4o.xml.element,"+
|
||||
"org.x4o.xml.io,"+
|
||||
"org.x4o.xml.lang,"+
|
||||
"org.x4o.xml.lang.meta,"+
|
||||
"org.x4o.xml.lang.phase,"+
|
||||
"org.x4o.xml.lang.task,"+
|
||||
"org.x4o.xml.lang.task.run,"+
|
||||
"javax.el,"+
|
||||
"org.apache.el,"+
|
||||
"org.apache.el.lang,"+
|
||||
"org.apache.el.parser,"+
|
||||
"org.apache.el.util,"+
|
||||
"ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ,"+
|
||||
"ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒃᐤᣔᐪ,"+
|
||||
"ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ,"+
|
||||
"ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.ᐧᣞᣛ,"+
|
||||
"ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.ᔆᣖᑊᒄᓫᣗ,"+
|
||||
"ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.ᔆᣖᑊᒄᓫᣗ.ᐧᣞᣛ,"+
|
||||
"ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒼᒻᣔᙆᙆ,"+
|
||||
"ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒼᒻᣔᙆᙆ.ᣔᔿᔿᐤ,"+
|
||||
"ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒼᒻᣔᙆᙆ.ᣔᔿᔿᐤ.ᐧᣞᣛ,"+
|
||||
"ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒼᒻᣔᙆᙆ.ᣖᑊᣗᣔᐪᓫ,"+
|
||||
"ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᔿᓑᔿᔿᔋᐝᣚ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᑊᔿᓫ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.ᐧᣞᣛ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.ᒄᓫᣕᐪᣔᒻ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.ᒻᑊᣕᕐᓑᣔ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.ᓑᣕᣳᒼᐤᒄᓫ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᔿᓫᐪᑋᐤᒄᐤᓑᔿᔆ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᔿᓫᐪᑋᐤᒄᐤᓑᔿᔆ.ᐧᣞᣛ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣔᣕᣕᐤᐪᣔᐪᑊᐤᣕ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣔᣕᣕᐤᐪᣔᐪᑊᐤᣕ.ᐧᣞᣛ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.ᐦ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.ᔆᐪᑊᒃᑊᐪᙆ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.ᕐᓑᣕᔆ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᒃᐤᣗᕐᒼᓑᒃᓫ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᒃᐤᣗᕐᒼᓑᒃᓫ.ᣔᒻᓑ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᒢᓫᑊᐣᑊ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᒢᓫᑊᐣᑊ.ᒄᓫᣔᐪᑋᔆᐪᣔᣗ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᒢᓫᑊᐣᑊ.ᔿᓫᒻᓫᓫ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᔿᣔᐪᣗᑊᕁ,"+
|
||||
"ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᣔᒃᣔᒼᓑᔆ,"+
|
||||
"ᒢᐩᐩ.ᒼᐤᒻᒻᓫᒼᐪᑊᐤᣕᔆ,"+
|
||||
"ᒢᐩᐩ.ᓫᣕᐪᓫᣗ.ᣖᑊᓫ,"+
|
||||
"ᒢᐩᐩ.ᓫᣕᐪᓫᣗ.ᣖᑊᓫ.ᐪᣔᔆᐪᓫ,"+
|
||||
"ᒢᐩᐩ.ᓫᣕᐪᓫᣗ.ᣗᑊᒼᓫ,"+
|
||||
"ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ,"+
|
||||
"ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ,"+
|
||||
"ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ,"+
|
||||
"ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒢᔿᕽ,"+
|
||||
"ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒢᔿᕽ.ᐧᣞᣛ,"+
|
||||
"ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒢᔿᕽ.ᘁᓑᓑᣗ,"+
|
||||
"ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒻᐤᕐᕐᓫᣗ,"+
|
||||
"ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒻᐤᕐᕐᓫᣗ.ᐧᣞᣛ,"+
|
||||
"ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒻᐤᣔᑊᐣᓫᣗ,"+
|
||||
"ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒻᐤᣔᑊᐣᓫᣗ.ᐧᣞᣛ,"+
|
||||
"love.distributedrebirth.warpme,"+
|
||||
"love.distributedrebirth.warpme.core,"+
|
||||
"love.distributedrebirth.warpme.hash,"+
|
||||
"love.distributedrebirth.warpme.sea,"+
|
||||
"love.distributedrebirth.warpme.ship,"+
|
||||
"love.distributedrebirth.unicode4d,"+
|
||||
"love.distributedrebirth.unicode4d.atlas,"+
|
||||
"love.distributedrebirth.unicode4d.draw,"+
|
||||
"love.distributedrebirth.nx01.mushroom.mais.mm,"+
|
||||
"org.eobjects.metamodel.doc,"+
|
||||
"org.eobjects.metamodel.doc.jdbc,"+
|
||||
"org.eobjects.metamodel.doc.jdbc.db,"+
|
||||
"org.apache.metamodel,"+
|
||||
"org.apache.metamodel.convert,"+
|
||||
"org.apache.metamodel.create,"+
|
||||
"org.apache.metamodel.data,"+
|
||||
"org.apache.metamodel.delete,"+
|
||||
"org.apache.metamodel.drop,"+
|
||||
"org.apache.metamodel.insert,"+
|
||||
"org.apache.metamodel.intercept,"+
|
||||
"org.apache.metamodel.query,"+
|
||||
"org.apache.metamodel.query.builder,"+
|
||||
"org.apache.metamodel.query.parser,"+
|
||||
"org.apache.metamodel.schema,"+
|
||||
"org.apache.metamodel.update,"+
|
||||
"org.apache.metamodel.util,"+
|
||||
"org.apache.metamodel.csv,"+
|
||||
"org.apache.metamodel.xml,"+
|
||||
"org.apache.metamodel.mongodb,"+
|
||||
"org.apache.metamodel.jdbc,"+
|
||||
"org.apache.metamodel.jdbc.dialects,"+
|
||||
"au.com.bytecode.opencsv,"+
|
||||
"au.com.bytecode.opencsv.bean,"+
|
||||
"org.postgresql,"+
|
||||
"org.postgresql.copy,"+
|
||||
"org.postgresql.core,"+
|
||||
"org.postgresql.core.v3,"+
|
||||
"org.postgresql.core.v3.adaptivefetch,"+
|
||||
"org.postgresql.core.v3.replication,"+
|
||||
"org.postgresql.ds,"+
|
||||
"org.postgresql.ds.common,"+
|
||||
"org.postgresql.fastpath,"+
|
||||
"org.postgresql.geometric,"+
|
||||
"org.postgresql.gss,"+
|
||||
"org.postgresql.hostchooser,"+
|
||||
"org.postgresql.jdbc,"+
|
||||
"org.postgresql.jdbc2,"+
|
||||
"org.postgresql.jdbc2.optional,"+
|
||||
"org.postgresql.jdbc3,"+
|
||||
"org.postgresql.jdbcurlresolver,"+
|
||||
"org.postgresql.largeobject,"+
|
||||
"org.postgresql.osgi,"+
|
||||
"org.postgresql.plugin,"+
|
||||
"org.postgresql.replication,"+
|
||||
"org.postgresql.replication.fluent,"+
|
||||
"org.postgresql.replication.fluent.logical,"+
|
||||
"org.postgresql.replication.fluent.physical,"+
|
||||
"org.postgresql.ssl,"+
|
||||
"org.postgresql.ssl.jdbc4,"+
|
||||
"org.postgresql.sspi,"+
|
||||
"org.postgresql.translation,"+
|
||||
"org.postgresql.util,"+
|
||||
"org.postgresql.util.internal,"+
|
||||
"org.postgresql.xa,"+
|
||||
"org.postgresql.xml,"+
|
||||
"com.fasterxml.jackson.core,"+
|
||||
"com.fasterxml.jackson.core.async,"+
|
||||
"com.fasterxml.jackson.core.base,"+
|
||||
"com.fasterxml.jackson.core.exc,"+
|
||||
"com.fasterxml.jackson.core.filter,"+
|
||||
"com.fasterxml.jackson.core.format,"+
|
||||
"com.fasterxml.jackson.core.io,"+
|
||||
"com.fasterxml.jackson.core.json,"+
|
||||
"com.fasterxml.jackson.core.json.async,"+
|
||||
"com.fasterxml.jackson.core.sym,"+
|
||||
"com.fasterxml.jackson.core.type,"+
|
||||
"com.fasterxml.jackson.core.util,"+
|
||||
"com.fasterxml.jackson.annotation,"+
|
||||
"com.fasterxml.jackson.databind,"+
|
||||
"com.fasterxml.jackson.databind.annotation,"+
|
||||
"com.fasterxml.jackson.databind.cfg,"+
|
||||
"com.fasterxml.jackson.databind.deser,"+
|
||||
"com.fasterxml.jackson.databind.deser.impl,"+
|
||||
"com.fasterxml.jackson.databind.deser.std,"+
|
||||
"com.fasterxml.jackson.databind.exc,"+
|
||||
"com.fasterxml.jackson.databind.ext,"+
|
||||
"com.fasterxml.jackson.databind.introspect,"+
|
||||
"com.fasterxml.jackson.databind.jdk14,"+
|
||||
"com.fasterxml.jackson.databind.json,"+
|
||||
"com.fasterxml.jackson.databind.jsonFormatVisitors,"+
|
||||
"com.fasterxml.jackson.databind.jsonschema,"+
|
||||
"com.fasterxml.jackson.databind.jsontype,"+
|
||||
"com.fasterxml.jackson.databind.jsontype.impl,"+
|
||||
"com.fasterxml.jackson.databind.module,"+
|
||||
"com.fasterxml.jackson.databind.node,"+
|
||||
"com.fasterxml.jackson.databind.ser,"+
|
||||
"com.fasterxml.jackson.databind.ser.impl,"+
|
||||
"com.fasterxml.jackson.databind.ser.std,"+
|
||||
"com.fasterxml.jackson.databind.type,"+
|
||||
"com.fasterxml.jackson.databind.util"
|
||||
); // ; version=1.0.0
|
||||
|
||||
if (cachedir != null) {
|
||||
configMap.put(Constants.FRAMEWORK_STORAGE, cachedir.getAbsolutePath());
|
||||
}
|
||||
return configMap;
|
||||
}
|
||||
|
||||
private static File createCacheDir() {
|
||||
final File cachedir;
|
||||
try {
|
||||
cachedir = File.createTempFile("gdxapp4d.tos4.cache", null);
|
||||
cachedir.delete();
|
||||
createShutdownHook(cachedir);
|
||||
return cachedir;
|
||||
} catch (IOException e) {
|
||||
// temp dir creation failed, return null
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static void createShutdownHook(final File cachedir) {
|
||||
Runtime.getRuntime().addShutdownHook(new Thread() {
|
||||
@Override
|
||||
public void run() {
|
||||
deleteFileOrDir(cachedir);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static void deleteFileOrDir(File file) {
|
||||
if (file.isDirectory()) {
|
||||
File[] childs = file.listFiles();
|
||||
for (File child : childs) {
|
||||
deleteFileOrDir(child);
|
||||
}
|
||||
}
|
||||
file.delete();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4;
|
||||
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface GDXAppTos4BootListener {
|
||||
|
||||
void bootLine(String message);
|
||||
|
||||
void bootLineError(String message);
|
||||
}
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.ScreenAdapter;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public class GDXAppTos4BootScreen extends ScreenAdapter implements GDXAppTos4BootListener {
|
||||
|
||||
private BitmapFont font;
|
||||
private BitmapFont fontError;
|
||||
private SpriteBatch batch;
|
||||
private Texture backgroundImage;
|
||||
private List<BootMessage> messages = new ArrayList<>();
|
||||
|
||||
class BootMessage {
|
||||
String bootLine;
|
||||
String bootLineError;
|
||||
public BootMessage(String bootLine, String bootLineError) {
|
||||
this.bootLine = bootLine;
|
||||
this.bootLineError = bootLineError;
|
||||
}
|
||||
}
|
||||
|
||||
public GDXAppTos4BootScreen() {
|
||||
batch = new SpriteBatch();
|
||||
backgroundImage = new Texture(Gdx.files.internal("background/msx-boot.png"));
|
||||
font = new BitmapFont();
|
||||
fontError = new BitmapFont();
|
||||
fontError.setColor(1f, 0f, 0f, 1f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(float delta) {
|
||||
int textX = 100;
|
||||
int textY = 420;
|
||||
int textYStep = 20;
|
||||
batch.begin();
|
||||
batch.draw(backgroundImage, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
|
||||
synchronized (messages) {
|
||||
for (BootMessage message:messages) {
|
||||
if (message.bootLine != null) {
|
||||
font.draw(batch, message.bootLine, textX, textY-=textYStep);
|
||||
} else if (message.bootLineError != null) {
|
||||
fontError.draw(batch, message.bootLineError, textX, textY-=textYStep);
|
||||
}
|
||||
}
|
||||
}
|
||||
batch.end();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
batch.dispose();
|
||||
backgroundImage.dispose();
|
||||
font.dispose();
|
||||
fontError.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bootLine(String message) {
|
||||
synchronized (messages) {
|
||||
messages.add(new BootMessage(message, null));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bootLineError(String message) {
|
||||
synchronized (messages) {
|
||||
messages.add(new BootMessage(null, message));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4;
|
||||
|
||||
import org.osgi.framework.launch.Framework;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public class GDXAppTos4Startup {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(GDXAppTos4Startup.class);
|
||||
|
||||
public static Framework init(GDXAppTos4 tos4, GDXAppTos4Activator systemActivator) {
|
||||
LOG.info("Startup framework");
|
||||
final Framework systemBundle = GDXAppTos4BootFactory.createFramework();
|
||||
final GDXAppTos4BootScreen bootScreen = new GDXAppTos4BootScreen();
|
||||
|
||||
systemActivator.setBootListener(bootScreen);
|
||||
tos4.registrateScreen(bootScreen);
|
||||
tos4.selectScreen(GDXAppTos4BootScreen.class);
|
||||
|
||||
Runnable run = () -> {
|
||||
try {
|
||||
systemBundle.init();
|
||||
systemBundle.start();
|
||||
LOG.debug("Startup system-activator");
|
||||
systemActivator.start(systemBundle.getBundleContext());
|
||||
|
||||
if (!systemActivator.hasStartError()) {
|
||||
Gdx.app.postRunnable(() -> {
|
||||
LOG.debug("Release boot-screen");
|
||||
systemActivator.setBootListener(null);
|
||||
tos4.disposeScreen(bootScreen);
|
||||
systemActivator.fireBootCompleted();
|
||||
});
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
};
|
||||
Thread framework = new Thread(run);
|
||||
framework.setName("boot");
|
||||
framework.start();
|
||||
|
||||
return systemBundle;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4.service;
|
||||
|
||||
import net.spookygames.gdx.nativefilechooser.NativeFileChooser;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface SystemGdxBootArgs {
|
||||
|
||||
boolean isWarpCoreNoLock();
|
||||
|
||||
int getWindowWidth();
|
||||
|
||||
int getWindowHeight();
|
||||
|
||||
NativeFileChooser getFileChooser();
|
||||
|
||||
void shutdown();
|
||||
|
||||
void addBootReadyListener(SystemGdxBootReadyListener listener);
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4.service;
|
||||
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface SystemGdxBootReadyListener {
|
||||
|
||||
void bootCompleted();
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4.service;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface SystemGdxFont {
|
||||
|
||||
BitmapFont getFont();
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4.service;
|
||||
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface SystemGdxLog {
|
||||
|
||||
public static final String ACTIVATE = "Activate";
|
||||
public static final String DEACTIVATE = "Deactivate";
|
||||
|
||||
void infoTag(String tag, String message, Object...args);
|
||||
|
||||
void infoTag(String tag, String message, Throwable exception);
|
||||
|
||||
void debugTag(String tag, String message, Object...args);
|
||||
|
||||
void debugTag(String tag, String message, Throwable exception);
|
||||
|
||||
void errorTag(String tag, String message, Object...args);
|
||||
|
||||
void errorTag(String tag, String message, Throwable exception);
|
||||
|
||||
default void info(Object tag, String message, Object...args) {
|
||||
infoTag(tag.getClass().getName(), message, args);
|
||||
}
|
||||
|
||||
default void debug(Object tag, String message, Object...args) {
|
||||
debugTag(tag.getClass().getName(), message, args);
|
||||
}
|
||||
|
||||
default void error(Object tag, String message, Object...args) {
|
||||
errorTag(tag.getClass().getName(), message, args);
|
||||
}
|
||||
|
||||
default void error(Object tag, String message, Throwable exception) {
|
||||
errorTag(tag.getClass().getName(), message, exception);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4.service;
|
||||
|
||||
import com.badlogic.gdx.Screen;
|
||||
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface SystemGdxTerminal {
|
||||
|
||||
void registrateScreen(Screen screen);
|
||||
|
||||
void disposeScreen(Screen screen);
|
||||
|
||||
<T extends Screen> T selectScreen(Class<T> screenClass);
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4.service;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface SystemWarpBase {
|
||||
|
||||
File getHyperdriveHome();
|
||||
|
||||
File getWarpshipHome();
|
||||
}
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4.service;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import love.distributedrebirth.warpme.core.WaterBucket;
|
||||
import love.distributedrebirth.warpme.core.WaterCipher;
|
||||
import love.distributedrebirth.warpme.core.WaterCipherHeart;
|
||||
import love.distributedrebirth.warpme.core.WaterCipherHeartTone;
|
||||
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.BãßBȍőn𓄯;
|
||||
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.ᔆᣖᑊᒄᓫᣗ.BãßBȍőnSpiderWireFly注;
|
||||
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.ᔆᣖᑊᒄᓫᣗ.BãßBȍőnSpiderWire注;
|
||||
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒼᒻᣔᙆᙆ.ᣔᔿᔿᐤ.BãßBȍőnAmmoBoxDoorԲ;
|
||||
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᔿᓑᔿᔿᔋᐝᣚ.BãßᛗᚢᛗᛗᛉVū́ǘrChaliceEnumShot𓄯;
|
||||
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.TTꞱꞱᖟGateway;
|
||||
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.ᐦ.TerminatorBullet;
|
||||
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.ᐦ.Terminator𓄯;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒢᔿᕽ.Vū́ǘrBȍőnSupportꞱᴿᴳᴮ;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒢᔿᕽ.ᘁᓑᓑᣗ.Vū́ǘrAttributeBooleanᴶᴹˣ;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒢᔿᕽ.ᘁᓑᓑᣗ.Vū́ǘrAttributeStringᴶᴹˣ;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒢᔿᕽ.ᘁᓑᓑᣗ.Vū́ǘrBurnCounterᴶᴹˣ;
|
||||
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᣔᒃᣔᒼᓑᔆ.TeŀRáàmRȧñkEnumInluider;
|
||||
import ᒢᐩᐩ.ᒼᐤᒻᒻᓫᒼᐪᑊᐤᣕᔆ.Listᴿᵈ;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
//@BãßBȍőnDuytsFlüstern注(purpose = "The warpcore writer and armor manager.")
|
||||
public enum SystemWarpCore implements BãßᛗᚢᛗᛗᛉVū́ǘrChaliceEnumShot𓄯<SystemWarpCore> {
|
||||
|
||||
INSTANCE;
|
||||
|
||||
@BãßBȍőnSpiderWire注(paint = Vū́ǘrBȍőnSupportꞱᴿᴳᴮ.ẞassPaint.ꞱAttributeWireFly.class)
|
||||
@BãßBȍőnSpiderWireFly注(eye = "armedWarpCipherLock", description = "Is the water cipher locked.")
|
||||
private Vū́ǘrAttributeBooleanᴶᴹˣ armedWarpCipherLock;
|
||||
|
||||
@BãßBȍőnSpiderWire注(paint = Vū́ǘrBȍőnSupportꞱᴿᴳᴮ.ẞassPaint.ꞱAttributeWireFly.class)
|
||||
@BãßBȍőnSpiderWireFly注(eye = "armedWarpWaterName", description = "The armed water cipher name.")
|
||||
private Vū́ǘrAttributeStringᴶᴹˣ armedWarpWaterName;
|
||||
|
||||
@BãßBȍőnSpiderWire注(paint = Vū́ǘrBȍőnSupportꞱᴿᴳᴮ.ẞassPaint.ꞱAttributeWireFly.class)
|
||||
@BãßBȍőnSpiderWireFly注(eye = "armedWarpWaterDesc", description = "The armed water cipher description.")
|
||||
private Vū́ǘrAttributeStringᴶᴹˣ armedWarpWaterDesc;
|
||||
|
||||
@BãßBȍőnSpiderWire注(paint = Vū́ǘrBȍőnSupportꞱᴿᴳᴮ.ẞassPaint.ꞱBurnWireFly.class)
|
||||
@BãßBȍőnSpiderWireFly注(eye = "warpCoreValidates", description = "The amount of warpcore validates.")
|
||||
private Vū́ǘrBurnCounterᴶᴹˣ warpCoreValidates;
|
||||
|
||||
@BãßBȍőnSpiderWire注(paint = Vū́ǘrBȍőnSupportꞱᴿᴳᴮ.ẞassPaint.ꞱBurnWireFly.class)
|
||||
@BãßBȍőnSpiderWireFly注(eye = "warpCoreReads", description = "The amount of warpcore reads.")
|
||||
private Vū́ǘrBurnCounterᴶᴹˣ warpCoreReads;
|
||||
|
||||
@BãßBȍőnSpiderWire注(paint = Vū́ǘrBȍőnSupportꞱᴿᴳᴮ.ẞassPaint.ꞱBurnWireFly.class)
|
||||
@BãßBȍőnSpiderWireFly注(eye = "warpCoreWrites", description = "The amount of warpcore writes.")
|
||||
private Vū́ǘrBurnCounterᴶᴹˣ warpCoreWrites;
|
||||
|
||||
private SystemWarpCore() {
|
||||
亞ᶦᶦᶦ.thisʸᴰᐧᐧᶜᵒⁿˢᵗʳᵘᶜᵗᵒʳ(thisᵀᴮᵒⁿᵉ());
|
||||
armedWarpWaterName.setValue("default");
|
||||
armedWarpWaterDesc.setValue("Current active cipher.");
|
||||
armedWarpCipherLock.setValue(false);
|
||||
}
|
||||
|
||||
public void BãßLockWarpCipher(Consumer<String> logHandler) {
|
||||
armedWarpCipherLock.setValue(true);
|
||||
for (int pieType:TTꞱꞱᖟGateway.亞.bakedPieSlices()) {
|
||||
Listᴿᵈ<? extends Terminator𓄯<?>> parts = TTꞱꞱᖟGateway.亞.deliverPieSlices(pieType);
|
||||
for (Terminator𓄯<?> part : parts.iterableᴼᶠ()) {
|
||||
logHandler.accept("Lock: "+part.rȧñkNaam());
|
||||
BãßBȍőn𓄯.亞ᶦᶦᶦ.thisʸᴰᐧᐧˡᵒᶜᵏ(part);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public WaterBucket BãßCurrentWarpCore() {
|
||||
warpCoreReads.increment();
|
||||
WaterCipher warpCipher = new WaterCipher();
|
||||
warpCipher.setName(armedWarpWaterName.getValue());
|
||||
warpCipher.setDescription(armedWarpWaterDesc.getValue());
|
||||
for (int pieType:TTꞱꞱᖟGateway.亞.bakedPieSlices()) {
|
||||
WaterCipherHeart heart = new WaterCipherHeart();
|
||||
Listᴿᵈ<? extends Terminator𓄯<?>> bases = TTꞱꞱᖟGateway.亞.deliverPieSlices(pieType);
|
||||
heart.setBass(bases.getᴿᵈ(0).teŀráàmWaardes().sizeᴿᵈ());
|
||||
for (Terminator𓄯<?> part : bases.iterableᴼᶠ()) {
|
||||
WaterCipherHeartTone tone = new WaterCipherHeartTone();
|
||||
tone.setPart(part.rȧñkNaam());
|
||||
tone.setDialTone(part.rȧñkRingToon());
|
||||
tone.setChinaKey(part.rȧñkChinaSleutel());
|
||||
tone.setChinaValue(part.rȧñkChinaWaarde());
|
||||
heart.addHeartTone(tone);
|
||||
}
|
||||
warpCipher.getCipherHearts().add(heart);
|
||||
}
|
||||
WaterBucket bucket = new WaterBucket();
|
||||
bucket.fillWater(warpCipher);
|
||||
return bucket;
|
||||
}
|
||||
|
||||
public void BãßValidateWarpCore(WaterBucket warpBucket) {
|
||||
warpCoreValidates.increment();
|
||||
Map<String,String> chinaKey = new HashMap<>();
|
||||
Map<String,String> chinaValue = new HashMap<>();
|
||||
for (WaterCipherHeart heart:warpBucket.theWater().getCipherHearts()) {
|
||||
Listᴿᵈ<? extends Terminator𓄯<?>> bases = TTꞱꞱᖟGateway.亞.deliverPieSlices(heart.getBass());
|
||||
Map<String, Terminator𓄯<?>> baseParts = new HashMap<>();
|
||||
for (Terminator𓄯<?> base : bases.iterableᴼᶠ()) {
|
||||
baseParts.put(base.rȧñkNaam(), base);
|
||||
}
|
||||
for (WaterCipherHeartTone tone:heart.getHeartTones()) {
|
||||
if(chinaKey.containsKey(tone.getChinaKey())) {
|
||||
throw new IllegalArgumentException("Duplicate chinaKey: "+tone.getChinaKey());
|
||||
}
|
||||
if(chinaValue.containsKey(tone.getChinaValue())) {
|
||||
throw new IllegalArgumentException("Duplicate chinaValue: "+tone.getChinaValue());
|
||||
}
|
||||
chinaKey.put(tone.getChinaKey(), tone.getDialTone());
|
||||
chinaValue.put(tone.getChinaValue(), tone.getDialTone());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void BãßArmWarpCore(WaterBucket warpBucket) {
|
||||
BãßValidateWarpCore(warpBucket);
|
||||
warpCoreWrites.increment();
|
||||
armedWarpWaterName.setValue(warpBucket.theWater().getName());
|
||||
armedWarpWaterDesc.setValue(warpBucket.theWater().getDescription());
|
||||
for (WaterCipherHeart heart:warpBucket.theWater().getCipherHearts()) {
|
||||
Listᴿᵈ<? extends Terminator𓄯<?>> bases = TTꞱꞱᖟGateway.亞.deliverPieSlices(heart.getBass());
|
||||
Map<String, Terminator𓄯<?>> baseParts = new HashMap<>();
|
||||
for (Terminator𓄯<?> base : bases.iterableᴼᶠ()) {
|
||||
baseParts.put(base.rȧñkNaam(), base);
|
||||
}
|
||||
for (WaterCipherHeartTone tone:heart.getHeartTones()) {
|
||||
Terminator𓄯<?> bassTone = baseParts.get(tone.getPart());
|
||||
bassTone.thisᵀᴮᵒⁿᵉᴳʳᵃᵛᵉ().gelṳidѴaɳ(TeŀRáàmRȧñkEnumInluider.class).b̌ͬͪ̕ȍő͒nGlͩ̓ͤ̅̍̌oͩ̾ͮ̑̇͒͗c̀̍̆̂̾̊̽k͗̀ȩ̉ͯn̢̑̇̿ͬͤͨ̋sp̐ͥͪͧ͋̽̚iel(bassTone, tone.getDialTone());
|
||||
BãßBȍőnAmmoBoxDoorԲ<TerminatorBullet> ammoBox = BãßBȍőnAmmoBoxDoorԲ.castᴼᶠ(bassTone.thisᴬᵐᵐᵒᴮᵒˣ());
|
||||
ammoBox.bewaarKȱġễl(TerminatorBullet.CHINA_KEY, tone.getChinaKey());
|
||||
ammoBox.bewaarKȱġễl(TerminatorBullet.CHINA_VALUE, tone.getChinaValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4.service;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import love.distributedrebirth.warpme.sea.WaterOcean;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface SystemWarpSea {
|
||||
|
||||
String NAME_PROPERTY = "warp.sea.name";
|
||||
|
||||
String getWarpKey();
|
||||
|
||||
File getWarpHome();
|
||||
|
||||
WaterOcean getWarpSea();
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4.service;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.osgi.framework.BundleContext;
|
||||
import org.osgi.framework.BundleException;
|
||||
import org.x4o.xml.io.X4OConnectionException;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import love.distributedrebirth.warpme.ship.WaterDevice;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface SystemWarpShip {
|
||||
|
||||
WaterDevice getWarpShip();
|
||||
|
||||
int loadWaterOcean(BundleContext context, List<SystemWarpSea> registratedSeas, String key, Consumer<String> logger) throws IOException, InterruptedException, X4OConnectionException, SAXException, BundleException;
|
||||
|
||||
void loadBundles(BundleContext context, List<SystemWarpSea> registratedSeas) throws BundleException;
|
||||
|
||||
List<File> searchMagic(BundleContext context, String mimeType);
|
||||
}
|
||||
|
After Width: | Height: | Size: 33 KiB |
BIN
gdxapp4d-tos4/src/main/resources/background/doom-credits.png
Normal file
|
After Width: | Height: | Size: 373 KiB |
BIN
gdxapp4d-tos4/src/main/resources/background/gdxapp-loading.png
Normal file
|
After Width: | Height: | Size: 315 KiB |
|
After Width: | Height: | Size: 717 KiB |
BIN
gdxapp4d-tos4/src/main/resources/background/msx-boot.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
gdxapp4d-tos4/src/main/resources/background/temple-os.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
gdxapp4d-tos4/src/main/resources/background/terrydavis-front.png
Normal file
|
After Width: | Height: | Size: 249 KiB |
BIN
gdxapp4d-tos4/src/main/resources/background/terrydavis-nose.png
Normal file
|
After Width: | Height: | Size: 229 KiB |
|
|
@ -0,0 +1,9 @@
|
|||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
uniform vec4 u_color;
|
||||
|
||||
void main() {
|
||||
gl_FragColor = vec4(u_color);
|
||||
}
|
||||
10
gdxapp4d-tos4/src/main/resources/shader/color.vertex.glsl
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
attribute vec3 a_position;
|
||||
attribute vec3 a_normal;
|
||||
attribute vec2 a_texCoord0;
|
||||
|
||||
uniform mat4 u_worldTrans;
|
||||
uniform mat4 u_projTrans;
|
||||
|
||||
void main() {
|
||||
gl_Position = u_projTrans * u_worldTrans * vec4(a_position, 1.0);
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.gdxapp4d.tos4.service;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpCore;
|
||||
import love.distributedrebirth.warpme.core.WaterBucket;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public class Base2WarpCoreTest {
|
||||
|
||||
@Test
|
||||
public void testCurrentWarpCore() {
|
||||
WaterBucket warpCore = SystemWarpCore.INSTANCE.BãßCurrentWarpCore();
|
||||
Assertions.assertNotNull(warpCore);
|
||||
Assertions.assertNotNull(warpCore.theWater());
|
||||
Assertions.assertNotNull(warpCore.theWater().getName());
|
||||
Assertions.assertNotNull(warpCore.theWater().getDescription());
|
||||
Assertions.assertNotNull(warpCore.theWater().getCipherHearts());
|
||||
Assertions.assertTrue(warpCore.theWater().getCipherHearts().size() > 1);
|
||||
Assertions.assertTrue(warpCore.theWater().getCipherHearts().size() < 100);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidateWarpCore() {
|
||||
WaterBucket warpCore = SystemWarpCore.INSTANCE.BãßCurrentWarpCore();
|
||||
|
||||
warpCore.theWater().getCipherHearts().get(5).getHeartTones().get(0).setChinaKey("零");
|
||||
warpCore.theWater().getCipherHearts().get(5).getHeartTones().get(1).setChinaKey("零");
|
||||
IllegalArgumentException thrownKey = Assertions.assertThrows(IllegalArgumentException.class, () -> {
|
||||
SystemWarpCore.INSTANCE.BãßValidateWarpCore(warpCore);
|
||||
});
|
||||
Assertions.assertEquals("Duplicate chinaKey: 零", thrownKey.getMessage());
|
||||
|
||||
warpCore.theWater().getCipherHearts().get(4).getHeartTones().get(0).setChinaValue("pink");
|
||||
warpCore.theWater().getCipherHearts().get(4).getHeartTones().get(1).setChinaValue("pink");
|
||||
IllegalArgumentException thrownValue = Assertions.assertThrows(IllegalArgumentException.class, () -> {
|
||||
SystemWarpCore.INSTANCE.BãßValidateWarpCore(warpCore);
|
||||
});
|
||||
Assertions.assertEquals("Duplicate chinaValue: pink", thrownValue.getMessage());
|
||||
}
|
||||
}
|
||||