Resources now impelement the ResourceType interface

This commit is contained in:
Bas de Jong
2025-09-30 20:04:48 +02:00
parent 44b4613c27
commit d158668dfd
6 changed files with 40 additions and 14 deletions

View File

@@ -3,9 +3,12 @@ package org.toop.framework.assets.resources;
import javax.sound.sampled.*; import javax.sound.sampled.*;
import java.io.*; import java.io.*;
public class AudioResource extends Resource { public class AudioResource extends Resource implements ResourceType<AudioResource> {
private AudioInputStream audioInputStream = null; private AudioInputStream audioInputStream = null;
private Clip clip = null; private Clip clip = null;
public AudioResource(File audioFile) { public AudioResource(File audioFile) {
super(audioFile); super(audioFile);
} }
@@ -18,8 +21,7 @@ public class AudioResource extends Resource {
return this.clip; return this.clip;
} }
@Override public AudioResource load() {
public Resource load() {
try { try {
this.audioInputStream = AudioSystem.getAudioInputStream(this.stream); this.audioInputStream = AudioSystem.getAudioInputStream(this.stream);
Clip clip = AudioSystem.getClip(); Clip clip = AudioSystem.getClip();

View File

@@ -2,8 +2,13 @@ package org.toop.framework.assets.resources;
import java.io.File; import java.io.File;
public class FontResource extends Resource { public class FontResource extends Resource implements ResourceType<FontResource> {
public FontResource(File fontFile) { public FontResource(File fontFile) {
super(fontFile); super(fontFile);
} }
public FontResource load() {
return this;
}
} }

View File

@@ -2,11 +2,8 @@ package org.toop.framework.assets.resources;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import java.io.File; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
public class ImageResource extends Resource { public class ImageResource extends Resource implements ResourceType<ImageResource> {
private Image image = null; private Image image = null;
@@ -18,8 +15,7 @@ public class ImageResource extends Resource {
return this.image; return this.image;
} }
@Override public ImageResource load() {
public Resource load() {
this.image = new Image(this.stream); this.image = new Image(this.stream);
return this; return this;
} }

View File

@@ -3,6 +3,7 @@ package org.toop.framework.assets.resources;
import java.io.*; import java.io.*;
public abstract class Resource { public abstract class Resource {
final InputStream stream; final InputStream stream;
final File file; final File file;
@@ -15,10 +16,6 @@ public abstract class Resource {
} }
} }
public Resource load() {
return this;
}
public InputStream getInputStream() { public InputStream getInputStream() {
return this.stream; return this.stream;
} }
@@ -26,4 +23,5 @@ public abstract class Resource {
public File getFile() { public File getFile() {
return this.file; return this.file;
} }
} }

View File

@@ -0,0 +1,5 @@
package org.toop.framework.assets.resources;
public interface ResourceType<T extends Resource> {
T load();
}

View File

@@ -0,0 +1,20 @@
package org.toop.framework.assets.resources;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.File;
import java.io.IOException;
public class TextResource extends Resource implements ResourceType<TextResource> {
TextResource(File file) {
super(file);
}
public TextResource load() {
return this;
}
}