Easter cleaning git

This commit is contained in:
Willem Cazander 2025-04-27 00:09:28 +02:00
commit d0529bfadf
500 changed files with 116670 additions and 0 deletions

121
gdxapp4d-tos4/pom.xml Normal file
View 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>

View file

@ -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;
}
}

View file

@ -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;
}
}
}

View file

@ -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();
}
}

View file

@ -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);
}

View file

@ -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));
}
}
}

View file

@ -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;
}
}

View file

@ -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);
}

View file

@ -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();
}

View file

@ -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();
}

View file

@ -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);
}
}

View file

@ -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);
}

View file

@ -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();
}

View file

@ -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Ѵ(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());
}
}
}
}

View file

@ -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();
}

View file

@ -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);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

View file

@ -0,0 +1,9 @@
#ifdef GL_ES
precision mediump float;
#endif
uniform vec4 u_color;
void main() {
gl_FragColor = vec4(u_color);
}

View 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);
}

View file

@ -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());
}
}