Compare commits

...

2 Commits

Author SHA1 Message Date
DaniTheSkunk fb3a988375 started implementing GameSkunkAdvance 2022-12-17 13:24:00 +00:00
DaniTheSkunk 1d32ce757f don't crash TextureAtlas.repack when empty 2022-12-17 13:07:38 +00:00
3 changed files with 77 additions and 0 deletions

View File

@ -0,0 +1,62 @@
package com.danitheskunk.skunkworks;
import com.danitheskunk.skunkworks.audio.AudioEngine;
import com.danitheskunk.skunkworks.gfx.Color;
import org.lwjgl.glfw.GLFW;
public abstract class GameSkunkAdvance {
protected BaseGamepad gamepad;
private AudioEngine audioEngine;
private Engine engine;
private IWindow window;
public GameSkunkAdvance(String title) {
engine = new Engine();
window = engine.openWindow(new Vec2i(304, 176), title);
window.setScaler("integer");
window.setWindowSize(new Vec2i(1280, 720));
gamepad = window.getGamepad(0);
audioEngine = new AudioEngine(48000, 256, 8);
}
public void run() {
double lastTime, currentTime, delta, currentFrameTime;
currentFrameTime = 0;
lastTime = GLFW.glfwGetTime();
while(!window.shouldClose()) {
currentTime = GLFW.glfwGetTime();
delta = currentTime - lastTime;
lastTime = currentTime;
currentFrameTime += delta;
engine.tick();
window.tick();
gamepad.tick();
//todo: frame rate control
if(currentFrameTime >= 1.0 / 60.0) {
update();
var p2d = window.getPipeline2D();
window.startFrame();
p2d.startFrame();
p2d.getRenderContext().clear(Color.WHITE);
//render(p2d.getRenderContext());
p2d.finishFrame();
window.finishFrame();
currentFrameTime -= 1.0 / 60.0;
} else {
try {
Thread.sleep(1);
} catch(InterruptedException e) {
throw new RuntimeException(e);
}
}
audioEngine.refill();
}
}
protected void update() {
}
}

View File

@ -0,0 +1,11 @@
package com.danitheskunk.skunkworks;
public class TestGSA extends GameSkunkAdvance {
public TestGSA() {
super("Game Skunk Advance Test");
}
public static void main(String[] args) {
new TestGSA().run();
}
}

View File

@ -70,6 +70,10 @@ class TextureAtlas {
int y = 0; int y = 0;
int height; int height;
if(textures.isEmpty()) {
return;
}
textures.sort(new TextureHeightComparator().reversed()); textures.sort(new TextureHeightComparator().reversed());
height = textures.get(0).getImg().getHeight(); height = textures.get(0).getImg().getHeight();