Added some skeletons
This commit is contained in:
parent
8082817860
commit
4febf41721
@ -35,6 +35,11 @@
|
||||
<version>${junit.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>nz.ac.massey.javaecs</groupId>
|
||||
<artifactId>javaecs</artifactId>
|
||||
<version>0.9.2-PRERELEASE</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
|
@ -1,5 +1,7 @@
|
||||
package nz.ac.massey.javaecs.examples;
|
||||
|
||||
import nz.ac.massey.javaecs.Engine;
|
||||
|
||||
/**
|
||||
* Hello world!
|
||||
*/
|
||||
@ -12,6 +14,9 @@ public final class App {
|
||||
* @param args The arguments of the program.
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
Engine gameEngine = new Engine();
|
||||
|
||||
|
||||
System.out.println("Hello World!");
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,5 @@
|
||||
package nz.ac.massey.javaecs.examples.Components;
|
||||
|
||||
public class Control {
|
||||
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package nz.ac.massey.javaecs.examples.Components;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
public class Render {
|
||||
public Type renderType;
|
||||
|
||||
public Render(Type t){
|
||||
renderType = t;
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package nz.ac.massey.javaecs.examples.Components;
|
||||
|
||||
import javafx.scene.image.Image;
|
||||
|
||||
public class Sprite {
|
||||
Image sprite;
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package nz.ac.massey.javaecs.examples.Components;
|
||||
|
||||
public class Vec2D {
|
||||
public double x;
|
||||
public double y;
|
||||
|
||||
public Vec2D(double x, double y){
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package nz.ac.massey.javaecs.examples.Systems;
|
||||
|
||||
import nz.ac.massey.javaecs.ECSSystem;
|
||||
|
||||
public class ControlSystem extends ECSSystem {
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,97 @@
|
||||
package nz.ac.massey.javaecs.examples.Systems;
|
||||
|
||||
import java.util.BitSet;
|
||||
|
||||
import javafx.application.Application;
|
||||
import javafx.application.Platform;
|
||||
import javafx.scene.Group;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.paint.Color;
|
||||
import javafx.stage.Stage;
|
||||
import nz.ac.massey.javaecs.ECSSystem;
|
||||
import nz.ac.massey.javaecs.Engine;
|
||||
import nz.ac.massey.javaecs.Entity;
|
||||
import nz.ac.massey.javaecs.examples.Components.Control;
|
||||
import nz.ac.massey.javaecs.examples.Components.Render;
|
||||
import nz.ac.massey.javaecs.examples.Components.Sprite;
|
||||
import nz.ac.massey.javaecs.examples.Components.Vec2D;
|
||||
|
||||
public class RenderSystem extends ECSSystem {
|
||||
JFXView jFXView;
|
||||
Engine gameEngine;
|
||||
Thread renderThread;
|
||||
double renderScale;
|
||||
int screenX = 1024;
|
||||
int screenY = 1024;
|
||||
|
||||
public RenderSystem(Engine gameEngine, double renderScale){
|
||||
this.gameEngine = gameEngine;
|
||||
// Set registrations
|
||||
registrationSet = new BitSet();
|
||||
registrationSet.set(gameEngine.getComponentIndex(Render.class));
|
||||
registrationSet.set(gameEngine.getComponentIndex(Vec2D.class));
|
||||
this.renderScale = renderScale;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
// Spawn a new asynchronous thread (won't rejoin the main program flow)
|
||||
renderThread = new Thread(new RenderStarter());
|
||||
renderThread.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
Group renderScene = new Group();
|
||||
for (Entity entity : entities) {
|
||||
if (((Render)gameEngine.getComponentData(entity, Render.class)).renderType == Control.class){
|
||||
// Do control updates here
|
||||
}
|
||||
else if (((Render)gameEngine.getComponentData(entity, Render.class)).renderType == Sprite.class){
|
||||
Vec2D vec2d = (Vec2D)gameEngine.getComponentData(entity, Vec2D.class);
|
||||
Sprite sprite = (Sprite)gameEngine.getComponentData(entity, Sprite.class);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Must be run by the UI thread, not the main thread.
|
||||
// This dispatches the operation run() to the UI.
|
||||
Platform.runLater(new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
JFXView.root.getChildren().clear();
|
||||
JFXView.root.getChildren().add(renderScene);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Add a renderer
|
||||
public class RenderStarter implements Runnable{
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
JFXView.run();
|
||||
}
|
||||
void updateScene(Group newGroup){
|
||||
JFXView.root.getChildren().clear();
|
||||
JFXView.root.getChildren().add(newGroup);
|
||||
}
|
||||
}
|
||||
|
||||
public static class JFXView extends Application {
|
||||
private static Group root;
|
||||
|
||||
@Override
|
||||
public void start(Stage primaryStage) throws Exception {
|
||||
// based on the colorful circles sample at https://docs.oracle.com/javase/8/javafx/get-started-tutorial/animation.htm
|
||||
root = new Group();
|
||||
Scene scene = new Scene(root, 1024, 1024, Color.BLACK);
|
||||
primaryStage.setScene(scene);
|
||||
primaryStage.show();
|
||||
}
|
||||
|
||||
public static void run(){
|
||||
launch(new String[0]);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user