Skip to content

Commit 8e959ae

Browse files
committed
refactor(sdk): generify GameLoader
1 parent 8006263 commit 8e959ae

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

sdk/src/server-api/sc/api/plugins/host/GameLoader.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,23 @@
1616
import java.util.List;
1717
import java.util.zip.GZIPInputStream;
1818

19-
public class GameLoader implements IHistoryListener {
19+
public class GameLoader<T> implements IHistoryListener {
2020
private static final Logger logger = LoggerFactory.getLogger(GameLoader.class);
2121
private volatile boolean finished;
22-
private Object obj = null;
23-
private List<Class<?>> clazzes;
22+
private T obj = null;
23+
private List<Class<T>> clazzes;
2424
private GameLoaderClient client;
2525

26-
public GameLoader(List<Class<?>> clazzes) {
26+
public GameLoader(List<Class<T>> clazzes) {
2727
this.finished = false;
2828
this.clazzes = clazzes;
2929
}
3030

31-
public GameLoader(Class<?>... clazz) {
31+
public GameLoader(Class<T>... clazz) {
3232
this(Arrays.asList(clazz));
3333
}
3434

35-
public Object loadGame(String filename) {
35+
public T loadGame(String filename) {
3636
try {
3737
return loadGame(new File(filename));
3838
} catch (IOException e) {
@@ -41,19 +41,19 @@ public Object loadGame(String filename) {
4141
}
4242
}
4343

44-
public Object loadGame(File file) throws IOException {
44+
public T loadGame(File file) throws IOException {
4545
return loadGame(new FileInputStream(file), file.getName().endsWith(".gz"));
4646
}
4747

48-
public Object loadGame(FileInputStream stream, boolean gzip) throws IOException {
48+
public T loadGame(FileInputStream stream, boolean gzip) throws IOException {
4949
if (gzip) {
5050
return loadGame(new GZIPInputStream(stream));
5151
} else {
5252
return loadGame(stream);
5353
}
5454
}
5555

56-
public Object loadGame(InputStream file) throws IOException {
56+
public T loadGame(InputStream file) throws IOException {
5757
client = new GameLoaderClient(file);
5858
client.addListener(this);
5959
client.start();
@@ -80,7 +80,7 @@ public void onGameOver(String roomId, GameResult result) {
8080
public void onNewState(String roomId, IGameState state) {
8181
logger.debug("Received new state");
8282
if (!this.finished) {
83-
for (Class<?> clazz : this.clazzes) {
83+
for (Class<T> clazz : this.clazzes) {
8484
if (clazz.isInstance(state)) {
8585
logger.debug("Received game info of type {}", clazz.getName());
8686
this.obj = clazz.cast(state);

server/src/sc/server/gaming/GameRoomManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public synchronized GameRoom createGameRoom(String gameType) throws RescuableCli
8787
// TODO implement tests
8888
logger.info("Loading game from file '{}' at turn {}", gameFile, turn);
8989
try {
90-
game = plugin.createGameFromState((IGameState) new GameLoader(IGameState.class).loadGame(gameFile));
90+
game = plugin.createGameFromState(new GameLoader<IGameState>(IGameState.class).loadGame(gameFile));
9191
} catch(IOException e) {
9292
logger.error("Failed to load game from file", e);
9393
game = plugin.createGame();

0 commit comments

Comments
 (0)