Moved USS2, reimplemented RAID as GameObjectManager
This commit is contained in:
parent
0e5c5370b3
commit
7f1cc3a7a3
|
@ -1,8 +1,14 @@
|
|||
## 22.2.0.0-alpha.1
|
||||
## 22.0.0.0-alpha.2
|
||||
* `[SDK]` **Created a new extension project category**
|
||||
* `[PlutoUSS2]` **Now an extension**
|
||||
* `PlutoLib` no longer depends on `PlutoUSS2`
|
||||
* `[PlutoGameObject]` **Reimplemented `RAID` as a Pluto extension**
|
||||
|
||||
## 22.0.0.0-alpha.1
|
||||
* `[SDK]` Jar sources and JavaDoc are now published
|
||||
* `[PlutoRuntime]` `Mod` objects now properly contain the version number
|
||||
|
||||
## 22.2.0.0-alpha.0
|
||||
## 22.0.0.0-alpha.0
|
||||
* Version bumped to 2022
|
||||
* `[SDK]` Maven version is now properly set again
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ object Versions {
|
|||
|
||||
const val isPrerelease = true
|
||||
const val prereleaseName = "alpha"
|
||||
const val prerealeaseUpdate = 1
|
||||
const val prerealeaseUpdate = 2
|
||||
|
||||
val versionFull =
|
||||
if (isPrerelease)
|
||||
|
|
|
@ -1,21 +1,13 @@
|
|||
import org.plutoengine.Versions
|
||||
|
||||
task("publish") {
|
||||
dependsOn(":plutoengine:plutouss2:publish")
|
||||
dependsOn(":plutoengine:plutolib:publish")
|
||||
dependsOn(":plutoengine:plutocomponent:publish")
|
||||
dependsOn(":plutoengine:plutoruntime:publish")
|
||||
dependsOn(":plutoengine:plutodisplay:publish")
|
||||
dependsOn(":plutoengine:plutotexture:publish")
|
||||
dependsOn(":plutoengine:plutomesher:publish")
|
||||
dependsOn(":plutoengine:plutoshader:publish")
|
||||
dependsOn(":plutoengine:plutoframebuffer:publish")
|
||||
dependsOn(":plutoengine:plutospritesheet:publish")
|
||||
dependsOn(":plutoengine:plutogui:publish")
|
||||
dependsOn(":plutoengine:plutoaudio:publish")
|
||||
dependsOn(":plutoengine:plutocore:publish")
|
||||
}
|
||||
file(".").listFiles().forEach {
|
||||
if (!it.isDirectory)
|
||||
return@forEach
|
||||
|
||||
dependsOn(":plutoengine:${it.name}:publish")
|
||||
}
|
||||
}
|
||||
|
||||
subprojects {
|
||||
apply(plugin = "java")
|
||||
|
|
|
@ -8,8 +8,6 @@ plugins {
|
|||
description = "Multi-purpose utility library that can be used in basically any project."
|
||||
|
||||
dependencies {
|
||||
api(project(":plutoengine:plutouss2"))
|
||||
|
||||
api("org.jetbrains", "annotations", "23.0.0")
|
||||
|
||||
api("org.yaml", "snakeyaml", "1.28")
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
/*/.settings
|
||||
|
||||
/.vscode
|
||||
|
||||
# Ignore Eclipse project files
|
||||
/*/.project
|
||||
/*/.classpath
|
||||
/.project
|
||||
/.settings
|
||||
|
||||
# Ignore IDEA project files
|
||||
/.idea
|
||||
/*/.idea
|
||||
.idea
|
||||
|
||||
*.log
|
||||
|
||||
/.gradle/
|
||||
|
||||
# Ignore Gradle project-specific cache directory
|
||||
.gradle
|
||||
|
||||
# Ignore Gradle build output directory
|
||||
/build
|
||||
/*/build
|
||||
|
||||
/bin
|
||||
/*/bin
|
|
@ -0,0 +1,71 @@
|
|||
import org.plutoengine.Versions
|
||||
|
||||
task("publish") {
|
||||
file(".").listFiles().forEach {
|
||||
if (!it.isDirectory)
|
||||
return@forEach
|
||||
|
||||
dependsOn(":plutoengine-ext:${it.name}:publish")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
subprojects {
|
||||
apply(plugin = "java")
|
||||
apply(plugin = "java-library")
|
||||
apply(plugin = "maven-publish")
|
||||
apply(plugin = "signing")
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
configure<JavaPluginExtension> {
|
||||
sourceCompatibility = Versions.javaTargetVersion
|
||||
targetCompatibility = Versions.javaTargetVersion
|
||||
|
||||
withJavadocJar()
|
||||
withSourcesJar()
|
||||
}
|
||||
|
||||
configure<SourceSetContainer> {
|
||||
named("main") {
|
||||
tasks.withType<Jar> {
|
||||
from(allJava)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
configure<PublishingExtension> {
|
||||
publications {
|
||||
create<MavenPublication>("maven") {
|
||||
from(components["java"])
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven {
|
||||
name = "Vega"
|
||||
url = uri("https://vega.botdiril.com/")
|
||||
credentials {
|
||||
val vegaUsername: String? by project
|
||||
val vegaPassword: String? by project
|
||||
|
||||
username = vegaUsername
|
||||
password = vegaPassword
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.withType<Jar> {
|
||||
duplicatesStrategy = DuplicatesStrategy.INCLUDE
|
||||
}
|
||||
|
||||
configure<SigningExtension> {
|
||||
val signingKey: String? by project
|
||||
val signingPassword: String? by project
|
||||
useInMemoryPgpKeys(signingKey, signingPassword)
|
||||
sign(the<PublishingExtension>().publications["maven"])
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
plugins {
|
||||
java
|
||||
`java-library`
|
||||
}
|
||||
|
||||
description = "A small library for assigning objects easy to store numerical identifiers."
|
||||
|
||||
dependencies {
|
||||
implementation(project(":plutoengine:plutoruntime"))
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
package org.plutoengine.gameobject;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class GameObjectRegistry<H, E extends IGameObject<H>> implements Iterable<E>
|
||||
{
|
||||
private static final int INITIAL_SIZE = 512;
|
||||
|
||||
private final List<E> lookup;
|
||||
private final Map<H, E> reverseLookup;
|
||||
|
||||
public GameObjectRegistry()
|
||||
{
|
||||
this.lookup = new ArrayList<>(INITIAL_SIZE);
|
||||
this.reverseLookup = new HashMap<>(INITIAL_SIZE);
|
||||
}
|
||||
|
||||
public void register(E item)
|
||||
{
|
||||
var key = item.objectKey();
|
||||
|
||||
if (this.reverseLookup.containsKey(key))
|
||||
throw new IllegalArgumentException("Cannot register two items with the same key!");
|
||||
|
||||
var position = this.lookup.size();
|
||||
this.lookup.add(item);
|
||||
this.reverseLookup.put(key, item);
|
||||
item.onRegister(position);
|
||||
}
|
||||
|
||||
public Optional<E> getByID(int id)
|
||||
{
|
||||
try
|
||||
{
|
||||
return Optional.of(this.lookup.get(id));
|
||||
}
|
||||
catch (IndexOutOfBoundsException e)
|
||||
{
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
public Optional<E> getByKey(H key)
|
||||
{
|
||||
return Optional.of(this.reverseLookup.get(key));
|
||||
}
|
||||
|
||||
public Optional<Integer> getIDOf(H key)
|
||||
{
|
||||
return this.getByKey(key).map(IGameObject::objectID);
|
||||
}
|
||||
|
||||
public Optional<H> getKeyOf(int id)
|
||||
{
|
||||
return this.getByID(id).map(IGameObject::objectKey);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Iterator<E> iterator()
|
||||
{
|
||||
return this.lookup.iterator();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package org.plutoengine.gameobject;
|
||||
|
||||
public interface IGameObject<H>
|
||||
{
|
||||
H objectKey();
|
||||
|
||||
void onRegister(int objectID);
|
||||
|
||||
int objectID();
|
||||
}
|
|
@ -1,23 +1,30 @@
|
|||
rootProject.name = "plutoengine-sdk"
|
||||
|
||||
include("plutoengine",
|
||||
"plutoengine-ext",
|
||||
"plutoengine-demos")
|
||||
|
||||
project(":plutoengine").projectDir = file("./engine-core")
|
||||
project(":plutoengine-ext").projectDir = file("./engine-ext")
|
||||
project(":plutoengine-demos").projectDir = file("./engine-demo")
|
||||
|
||||
include ("plutoengine:plutouss2",
|
||||
"plutoengine:plutolib",
|
||||
"plutoengine:plutocomponent",
|
||||
"plutoengine:plutoruntime",
|
||||
"plutoengine:plutodisplay",
|
||||
"plutoengine:plutotexture",
|
||||
"plutoengine:plutomesher",
|
||||
"plutoengine:plutoshader",
|
||||
"plutoengine:plutoframebuffer",
|
||||
"plutoengine:plutospritesheet",
|
||||
"plutoengine:plutogui",
|
||||
"plutoengine:plutoaudio",
|
||||
"plutoengine:plutocore")
|
||||
file("engine-core").listFiles().forEach {
|
||||
if (!it.isDirectory)
|
||||
return@forEach
|
||||
|
||||
include("plutoengine-demos:basic-application")
|
||||
include("plutoengine:${it.name}")
|
||||
}
|
||||
|
||||
file("engine-ext").listFiles().forEach {
|
||||
if (!it.isDirectory)
|
||||
return@forEach
|
||||
|
||||
include("plutoengine-ext:${it.name}")
|
||||
}
|
||||
|
||||
file("engine-demo").listFiles().forEach {
|
||||
if (!it.isDirectory)
|
||||
return@forEach
|
||||
|
||||
include("plutoengine-demos:${it.name}")
|
||||
}
|
Loading…
Reference in New Issue