From 511c3148e7a1f35486392c5bdbe0517f38eb15ab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Latner?= <matyas.latner@nic.cz>
Date: Mon, 9 Feb 2015 17:21:34 +0100
Subject: [PATCH] #7 Generic screen data loader

---
 core/src/cz/nic/tablexia/Tablexia.java        | 12 +++----
 .../cz/nic/tablexia/TablexiaApplication.java  | 32 +++++++++---------
 .../cz/nic/tablexia/game/GameDefinition.java  |  6 ++--
 .../game/games/robbery/DebugScreen.java       |  2 +-
 .../game/games/robbery/GameScreen.java        |  2 +-
 .../game/games/robbery/RuleScreen.java        |  2 +-
 .../screen/AbstractTablexiaScreen.java        | 33 ++++++++++++++++++-
 .../cz/nic/tablexia/screen/LoaderScreen.java  |  2 +-
 .../nic/tablexia/screen/ScreenDefinition.java |  8 ++---
 .../tablexia/screen/about/AboutScreen.java    |  2 +-
 .../encyclopedia/EncyclopediaScreen.java      |  2 +-
 .../screen/gamemenu/GameMenuScreen.java       |  2 +-
 .../screen/halloffame/HallOfFameScreen.java   |  2 +-
 .../screen/statistics/StatisticsScreen.java   |  2 +-
 14 files changed, 70 insertions(+), 39 deletions(-)

diff --git a/core/src/cz/nic/tablexia/Tablexia.java b/core/src/cz/nic/tablexia/Tablexia.java
index 114f83b1c..35f18a720 100644
--- a/core/src/cz/nic/tablexia/Tablexia.java
+++ b/core/src/cz/nic/tablexia/Tablexia.java
@@ -104,15 +104,15 @@ public class Tablexia extends TablexiaApplication {
 	
 	public static class ChangeScreenEvent implements ApplicationEvent {
 		
-		private Class<? extends AbstractTablexiaScreen> screen;
-		private ScreenTransaction 						screenTransaction;
+		private Class<? extends AbstractTablexiaScreen<?>> 	screen;
+		private ScreenTransaction 							screenTransaction;
 
-		public ChangeScreenEvent(Class<? extends AbstractTablexiaScreen> screen, ScreenTransaction screenTransaction) {
+		public ChangeScreenEvent(Class<? extends AbstractTablexiaScreen<?>> screen, ScreenTransaction screenTransaction) {
 			this.screen = screen;
 			this.screenTransaction = screenTransaction;
 		}
 		
-		public Class<? extends AbstractTablexiaScreen> getScreen() {
+		public Class<? extends AbstractTablexiaScreen<?>> getScreen() {
 			return screen;
 		}
 		
@@ -123,7 +123,7 @@ public class Tablexia extends TablexiaApplication {
 	
 	@Handler
 	public void handleChangeScreenEvent(final ChangeScreenEvent changeScreenEvent) {
-		final Class<? extends AbstractTablexiaScreen> screenClass = changeScreenEvent.getScreen();
+		final Class<? extends AbstractTablexiaScreen<?>> screenClass = changeScreenEvent.getScreen();
 		if (!loadingComplete) {
 			Log.err(getClass(), "Cannot change screen -> Application loading not complete!");
 			return;
@@ -138,7 +138,7 @@ public class Tablexia extends TablexiaApplication {
 			@Override
 			public void run() {
 				try {
-					AbstractTablexiaScreen screen = (AbstractTablexiaScreen) ClassReflection.getConstructors(screenClass)[0].newInstance(new Object[]{});
+					AbstractTablexiaScreen<?> screen = (AbstractTablexiaScreen<?>) ClassReflection.getConstructors(screenClass)[0].newInstance(new Object[]{});
 					setScreenIfIsDifferent(screen, changeScreenEvent.getScreenTransaction());
 				} catch (ReflectionException e) {
 					Log.err(getClass(), "Cannot change screen! (Do you have only one parameter less constructor in screen?)", e);
diff --git a/core/src/cz/nic/tablexia/TablexiaApplication.java b/core/src/cz/nic/tablexia/TablexiaApplication.java
index 5959f6491..4ba8b2a2e 100644
--- a/core/src/cz/nic/tablexia/TablexiaApplication.java
+++ b/core/src/cz/nic/tablexia/TablexiaApplication.java
@@ -32,10 +32,10 @@ public abstract class TablexiaApplication implements ApplicationListener {
 	
 	private static final 	Color 					BACKGROUND_COLOR = new Color(0f, 0f, 0f, 1f);
 	
-	private 				AbstractTablexiaScreen 	lastScreen;
-	private 				AbstractTablexiaScreen 	screen;
-	private 				InputMultiplexer 		inputMultiplexer;
-	private 				Stage					stage;
+	private 				AbstractTablexiaScreen<?>	lastScreen;
+	private 				AbstractTablexiaScreen<?>	screen;
+	private 				InputMultiplexer 			inputMultiplexer;
+	private 				Stage						stage;
 
 	
 	public Stage getStage() {
@@ -107,7 +107,7 @@ public abstract class TablexiaApplication implements ApplicationListener {
 	 * 
 	 * @param screen new screen to change for
 	 */
-	public void setScreenIfIsDifferent (AbstractTablexiaScreen screen) {
+	public void setScreenIfIsDifferent (AbstractTablexiaScreen<?> screen) {
 		if (getScreen() == null || getScreen().getClass() != screen.getClass()) {
 			setScreen(screen);
 		}
@@ -118,7 +118,7 @@ public abstract class TablexiaApplication implements ApplicationListener {
 	 * 
 	 * @param screen new screen to change for
 	 */
-	public void setScreen (AbstractTablexiaScreen screen) {
+	public void setScreen (AbstractTablexiaScreen<?> screen) {
 		processLastScreen(this.screen);
 		this.screen = screen;
 		processNewScreen(this.screen);
@@ -132,7 +132,7 @@ public abstract class TablexiaApplication implements ApplicationListener {
 	 * @param newScreen new screen to change for
 	 * @param screenTransaction screen transaction type
 	 */
-	public void setScreenIfIsDifferent (AbstractTablexiaScreen newScreen, ScreenTransaction screenTransaction) {
+	public void setScreenIfIsDifferent (AbstractTablexiaScreen<?> newScreen, ScreenTransaction screenTransaction) {
 		if (getScreen() == null || getScreen().getClass() != newScreen.getClass()) {
 			setScreen(newScreen, screenTransaction);
 		}
@@ -145,7 +145,7 @@ public abstract class TablexiaApplication implements ApplicationListener {
 	 * @param newScreen new screen to change for
 	 * @param screenTransaction screen transaction type
 	 */
-	public void setScreen (final AbstractTablexiaScreen newScreen, ScreenTransaction screenTransaction) {
+	public void setScreen (final AbstractTablexiaScreen<?> newScreen, ScreenTransaction screenTransaction) {
 		if (screenTransaction == null) {
 			setScreen(newScreen);
 		} else {			
@@ -182,11 +182,11 @@ public abstract class TablexiaApplication implements ApplicationListener {
 	 * 
 	 * @return current screen
 	 */
-	public AbstractTablexiaScreen getScreen () {
+	public AbstractTablexiaScreen<?> getScreen () {
 		return screen;
 	}
 	
-	private void processNewScreen(AbstractTablexiaScreen newScreen) {
+	private void processNewScreen(AbstractTablexiaScreen<?> newScreen) {
 		if (newScreen != null) {
 			inputMultiplexer.addProcessor(newScreen.getStage());
 			newScreen.show();
@@ -194,7 +194,7 @@ public abstract class TablexiaApplication implements ApplicationListener {
 		}
 	}
 	
-	private void processLastScreen(AbstractTablexiaScreen lastScreen) {
+	private void processLastScreen(AbstractTablexiaScreen<?> lastScreen) {
 		if (lastScreen != null) {
 			inputMultiplexer.removeProcessor(lastScreen.getStage());
 			lastScreen.hide();
@@ -213,7 +213,7 @@ public abstract class TablexiaApplication implements ApplicationListener {
 		FADE		(new FadeAnimation());
 		
 		private interface ScreenTransactionImplementation {
-			public void processTransaction(Stage stage, AbstractTablexiaScreen lastScreen, AbstractTablexiaScreen newScreen, Runnable newScreenHandler, Runnable lastScreenHandler, Runnable finishHandler);
+			public void processTransaction(Stage stage, AbstractTablexiaScreen<?> lastScreen, AbstractTablexiaScreen<?> newScreen, Runnable newScreenHandler, Runnable lastScreenHandler, Runnable finishHandler);
 		}
 		
 		private ScreenTransactionImplementation screenTransactionImplementation;
@@ -222,7 +222,7 @@ public abstract class TablexiaApplication implements ApplicationListener {
 			this.screenTransactionImplementation = screenTransactionImplementation;
 		}
 		
-		private void processTransaction(Stage stage, AbstractTablexiaScreen lastScreen, AbstractTablexiaScreen newScreen, Runnable newScreenHandler, Runnable lastScreenHandler, Runnable finishHandler) {
+		private void processTransaction(Stage stage, AbstractTablexiaScreen<?> lastScreen, AbstractTablexiaScreen<?> newScreen, Runnable newScreenHandler, Runnable lastScreenHandler, Runnable finishHandler) {
 			screenTransactionImplementation.processTransaction(stage, lastScreen, newScreen, newScreenHandler, lastScreenHandler, finishHandler);
 		}
 	}
@@ -234,7 +234,7 @@ public abstract class TablexiaApplication implements ApplicationListener {
 		protected float lastScreenMoveTo 	= Gdx.graphics.getWidth();
 		
 		@Override
-		public void processTransaction(Stage stage, final AbstractTablexiaScreen lastScreen, final AbstractTablexiaScreen newScreen, Runnable newScreenHandler, final Runnable lastScreenHandler, final Runnable finishHandler) {
+		public void processTransaction(Stage stage, final AbstractTablexiaScreen<?> lastScreen, final AbstractTablexiaScreen<?> newScreen, Runnable newScreenHandler, final Runnable lastScreenHandler, final Runnable finishHandler) {
 			final int transactionSpeed = 2;
 			newScreen.setLoadingListener(new ScreenLoadingListener() {
 				
@@ -259,7 +259,7 @@ public abstract class TablexiaApplication implements ApplicationListener {
 	private static class MoveLeftAnimation extends MoveRightAnimation {
 		
 		@Override
-		public void processTransaction(Stage stage, final AbstractTablexiaScreen lastScreen, AbstractTablexiaScreen newScreen, Runnable newScreenHandler, final Runnable lastScreenHandler, final Runnable finishHandler) {
+		public void processTransaction(Stage stage, final AbstractTablexiaScreen<?> lastScreen, AbstractTablexiaScreen<?> newScreen, Runnable newScreenHandler, final Runnable lastScreenHandler, final Runnable finishHandler) {
 			newScreenMoveFrom 	= Gdx.graphics.getWidth();
 			newScreenMoveTo 	= 0;
 			lastScreenMoveTo 	= -Gdx.graphics.getWidth();
@@ -270,7 +270,7 @@ public abstract class TablexiaApplication implements ApplicationListener {
 	private static class FadeAnimation implements cz.nic.tablexia.TablexiaApplication.ScreenTransaction.ScreenTransactionImplementation {
 		
 		@Override
-		public void processTransaction(Stage stage, final AbstractTablexiaScreen lastScreen, final AbstractTablexiaScreen newScreen, final Runnable newScreenHandler, final Runnable lastScreenHandler, final Runnable finishHandler) {
+		public void processTransaction(Stage stage, final AbstractTablexiaScreen<?> lastScreen, final AbstractTablexiaScreen<?> newScreen, final Runnable newScreenHandler, final Runnable lastScreenHandler, final Runnable finishHandler) {
 			final int transactionSpeed = 1;
 			final Texture texture = new ColorTexture(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), Color.BLACK);
 			final Actor screenDimmer = new Actor(){
diff --git a/core/src/cz/nic/tablexia/game/GameDefinition.java b/core/src/cz/nic/tablexia/game/GameDefinition.java
index 1dadee428..77ac3663b 100644
--- a/core/src/cz/nic/tablexia/game/GameDefinition.java
+++ b/core/src/cz/nic/tablexia/game/GameDefinition.java
@@ -14,10 +14,10 @@ public enum GameDefinition implements ApplicationEvent, IMenuItem {
 	
 	ROBBERY				("game_robbery_title", RuleScreen.class);
 
-	private String menuTextKey;
-	private Class<? extends AbstractTablexiaScreen> screenClass;
+	private String 										menuTextKey;
+	private Class<? extends AbstractTablexiaScreen<?>> 	screenClass;
 
-	private GameDefinition(String nameResource, Class<? extends AbstractTablexiaScreen> screenClass) {
+	private GameDefinition(String nameResource, Class<? extends AbstractTablexiaScreen<?>> screenClass) {
 		this.menuTextKey = nameResource;
 		this.screenClass = screenClass;
 	}
diff --git a/core/src/cz/nic/tablexia/game/games/robbery/DebugScreen.java b/core/src/cz/nic/tablexia/game/games/robbery/DebugScreen.java
index 1257e8c00..651eb249b 100644
--- a/core/src/cz/nic/tablexia/game/games/robbery/DebugScreen.java
+++ b/core/src/cz/nic/tablexia/game/games/robbery/DebugScreen.java
@@ -13,7 +13,7 @@ import cz.nic.tablexia.game.games.robbery.loader.RobberyTextureManager;
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
 import cz.nic.tablexia.util.Log;
 
-public class DebugScreen extends AbstractTablexiaScreen {
+public class DebugScreen extends AbstractTablexiaScreen<Void> {
 	
 	private enum DebugGroupColors {
         RED(Color.RED),
diff --git a/core/src/cz/nic/tablexia/game/games/robbery/GameScreen.java b/core/src/cz/nic/tablexia/game/games/robbery/GameScreen.java
index 4aca56691..307597147 100644
--- a/core/src/cz/nic/tablexia/game/games/robbery/GameScreen.java
+++ b/core/src/cz/nic/tablexia/game/games/robbery/GameScreen.java
@@ -28,7 +28,7 @@ import cz.nic.tablexia.game.games.robbery.loader.RobberyDataManager;
 import cz.nic.tablexia.game.games.robbery.loader.RobberyTextureManager;
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
 
-public class GameScreen extends AbstractTablexiaScreen {
+public class GameScreen extends AbstractTablexiaScreen<Void> {
 
 	private class GameBackground extends Actor {
 		
diff --git a/core/src/cz/nic/tablexia/game/games/robbery/RuleScreen.java b/core/src/cz/nic/tablexia/game/games/robbery/RuleScreen.java
index cc1145d12..e4b0f697b 100644
--- a/core/src/cz/nic/tablexia/game/games/robbery/RuleScreen.java
+++ b/core/src/cz/nic/tablexia/game/games/robbery/RuleScreen.java
@@ -25,7 +25,7 @@ import cz.nic.tablexia.loader.ApplicationFontManager;
 import cz.nic.tablexia.loader.CommonAssets;
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
 
-public class RuleScreen extends AbstractTablexiaScreen {
+public class RuleScreen extends AbstractTablexiaScreen<Void> {
 
 	private static final 	float TEXT_PAPER_POSITION_Y_RATIO	= 1f/2;
 	private static final 	float TEXT_PAPER_WIDTH_RATIO 		= 3f/5;
diff --git a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
index 22ee1c4b8..60a00a892 100644
--- a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
+++ b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
@@ -22,7 +22,7 @@ import cz.nic.tablexia.game.loader.AbstractDataManager;
 import cz.nic.tablexia.loader.IApplicationLoader;
 import cz.nic.tablexia.util.Log;
 
-public abstract class AbstractTablexiaScreen extends ScreenAdapter {
+public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter {
 	
 	public static class TextManager extends AbstractDataManager<I18NBundle> implements IApplicationLoader {
 
@@ -50,6 +50,21 @@ public abstract class AbstractTablexiaScreen extends ScreenAdapter {
 		}
 	}
 	
+	public class DataManager extends AbstractDataManager<T> implements IApplicationLoader {
+
+		public class DataLoader implements AsyncTask<T> {
+
+			@Override
+			public T call() throws Exception {
+				return prepareScreenData();
+			}
+		}
+		
+		public void load() {
+			setAsyncTask(new DataLoader());
+		}
+	}
+	
 	public static interface ScreenLoadingListener {
 		void loadingComplete();
 	}
@@ -57,6 +72,7 @@ public abstract class AbstractTablexiaScreen extends ScreenAdapter {
 	private Stage 					stage;
 	private AssetManager 			textureManager;
 	private TextManager 			textManager;
+	private DataManager 			dataManager;
 	private ScreenLoadingListener 	screenLoadingListener;
 	private boolean					loadingComplete;
 	private boolean					loadingStarted;
@@ -66,6 +82,7 @@ public abstract class AbstractTablexiaScreen extends ScreenAdapter {
 		stage = prepareStage();
 		textureManager 	= new AssetManager();
 		textManager 	= new TextManager();
+		dataManager 	= new DataManager();
 		
 		loadingComplete = false;
 		loadingStarted = false;
@@ -115,6 +132,7 @@ public abstract class AbstractTablexiaScreen extends ScreenAdapter {
 		if (!loadingComplete) {
 			startTextureLoader();
 			startTextLoader();
+			startDataLoader();
 			loadingStarted = true;
 		}
 	}
@@ -134,6 +152,7 @@ public abstract class AbstractTablexiaScreen extends ScreenAdapter {
 			if (loadingStarted) {				
 				if (!textureManager.update()) return;
 				if (!textManager.update()) return;
+				if (!dataManager.update()) return;
 				loadingComplete = true;
 				performScreenLoaded();
 				performScreenResized((int)stage.getWidth(), (int)stage.getHeight());
@@ -150,6 +169,7 @@ public abstract class AbstractTablexiaScreen extends ScreenAdapter {
 		stage.dispose();
 		textureManager.dispose();
 		textManager.dispose();
+		dataManager.dispose();
 		performScreenDisposed();
 	}
 	
@@ -185,6 +205,9 @@ public abstract class AbstractTablexiaScreen extends ScreenAdapter {
 	protected String 		prepareScreenTextResourcesAssetName() {
 		return null;
 	}
+	protected T 			prepareScreenData() {
+		return null;
+	}
 	
 	
 //////////////////////////// LOADERS
@@ -201,6 +224,10 @@ public abstract class AbstractTablexiaScreen extends ScreenAdapter {
 		textManager.load(new Locale("cs", "CZ"), prepareScreenTextResourcesAssetName());
 	}
 	
+	private void startDataLoader() {
+		dataManager.load();
+	}
+	
 	
 	public Texture getTexture(String textureName) {
 		return textureManager.get(textureName, Texture.class);
@@ -210,4 +237,8 @@ public abstract class AbstractTablexiaScreen extends ScreenAdapter {
 		return textManager.getResult().get(key);
 	}
 	
+	protected T getGameData() {
+		return dataManager.getResult();
+	}
+	
 }
diff --git a/core/src/cz/nic/tablexia/screen/LoaderScreen.java b/core/src/cz/nic/tablexia/screen/LoaderScreen.java
index 6816c7bb2..656aaef48 100644
--- a/core/src/cz/nic/tablexia/screen/LoaderScreen.java
+++ b/core/src/cz/nic/tablexia/screen/LoaderScreen.java
@@ -5,7 +5,7 @@ import com.badlogic.gdx.graphics.Texture.TextureFilter;
 import com.badlogic.gdx.graphics.g2d.Batch;
 import com.badlogic.gdx.scenes.scene2d.Actor;
 
-public class LoaderScreen extends AbstractTablexiaScreen {
+public class LoaderScreen extends AbstractTablexiaScreen<Void> {
 	
 	private LoaderBackground 	background;
 	private Texture 			backgroundTexture;
diff --git a/core/src/cz/nic/tablexia/screen/ScreenDefinition.java b/core/src/cz/nic/tablexia/screen/ScreenDefinition.java
index b4e1f477d..3b8fd6aad 100644
--- a/core/src/cz/nic/tablexia/screen/ScreenDefinition.java
+++ b/core/src/cz/nic/tablexia/screen/ScreenDefinition.java
@@ -19,11 +19,11 @@ public enum ScreenDefinition {
 	ENCYCLOPEDIA		(EncyclopediaScreen.class, 	MainMenuDefinition.ENCYCLOPEDIA),
 	ABOUT_APPLICATION	(AboutScreen.class, 		MainMenuDefinition.ABOUT_APPLICATION);
 	
-	private Class<? extends AbstractTablexiaScreen> screenClass;
-	private MainMenuDefinition 						mainMenuDefinition;
-	private static Object							messageHandler;
+	private Class<? extends AbstractTablexiaScreen<?>> 	screenClass;
+	private MainMenuDefinition 							mainMenuDefinition;
+	private static Object								messageHandler;
 
-	private ScreenDefinition(Class<? extends AbstractTablexiaScreen> screenClass, MainMenuDefinition mainMenuDefinition) {
+	private ScreenDefinition(Class<? extends AbstractTablexiaScreen<?>> screenClass, MainMenuDefinition mainMenuDefinition) {
 		this.screenClass = screenClass;
 		this.mainMenuDefinition = mainMenuDefinition;
 	}
diff --git a/core/src/cz/nic/tablexia/screen/about/AboutScreen.java b/core/src/cz/nic/tablexia/screen/about/AboutScreen.java
index acca98915..49f105b42 100644
--- a/core/src/cz/nic/tablexia/screen/about/AboutScreen.java
+++ b/core/src/cz/nic/tablexia/screen/about/AboutScreen.java
@@ -9,7 +9,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table;
 import cz.nic.tablexia.loader.ApplicationFontManager;
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
 
-public class AboutScreen extends AbstractTablexiaScreen {
+public class AboutScreen extends AbstractTablexiaScreen<Void> {
 	
 	@Override
 	protected void screenLoaded() {
diff --git a/core/src/cz/nic/tablexia/screen/encyclopedia/EncyclopediaScreen.java b/core/src/cz/nic/tablexia/screen/encyclopedia/EncyclopediaScreen.java
index f221d6fa2..7115d3d3e 100644
--- a/core/src/cz/nic/tablexia/screen/encyclopedia/EncyclopediaScreen.java
+++ b/core/src/cz/nic/tablexia/screen/encyclopedia/EncyclopediaScreen.java
@@ -9,7 +9,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table;
 import cz.nic.tablexia.loader.ApplicationFontManager;
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
 
-public class EncyclopediaScreen extends AbstractTablexiaScreen {
+public class EncyclopediaScreen extends AbstractTablexiaScreen<Void> {
 	
 	@Override
 	protected void screenLoaded() {
diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
index c9288c651..67d8af3b0 100644
--- a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
+++ b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java
@@ -8,7 +8,7 @@ import com.badlogic.gdx.scenes.scene2d.Actor;
 import cz.nic.tablexia.loader.ApplicationTextureManager;
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
 
-public class GameMenuScreen extends AbstractTablexiaScreen {
+public class GameMenuScreen extends AbstractTablexiaScreen<Void> {
 	
 	private GameMenuBackground 	background;
 
diff --git a/core/src/cz/nic/tablexia/screen/halloffame/HallOfFameScreen.java b/core/src/cz/nic/tablexia/screen/halloffame/HallOfFameScreen.java
index e64440f6a..7f133b4a4 100644
--- a/core/src/cz/nic/tablexia/screen/halloffame/HallOfFameScreen.java
+++ b/core/src/cz/nic/tablexia/screen/halloffame/HallOfFameScreen.java
@@ -9,7 +9,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table;
 import cz.nic.tablexia.loader.ApplicationFontManager;
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
 
-public class HallOfFameScreen extends AbstractTablexiaScreen {
+public class HallOfFameScreen extends AbstractTablexiaScreen<Void> {
 	
 	@Override
 	protected void screenLoaded() {
diff --git a/core/src/cz/nic/tablexia/screen/statistics/StatisticsScreen.java b/core/src/cz/nic/tablexia/screen/statistics/StatisticsScreen.java
index 70b1ec942..e390f14b2 100644
--- a/core/src/cz/nic/tablexia/screen/statistics/StatisticsScreen.java
+++ b/core/src/cz/nic/tablexia/screen/statistics/StatisticsScreen.java
@@ -15,7 +15,7 @@ import cz.nic.tablexia.loader.ApplicationFontManager;
 import cz.nic.tablexia.loader.CommonAssets;
 import cz.nic.tablexia.screen.AbstractTablexiaScreen;
 
-public class StatisticsScreen extends AbstractTablexiaScreen {
+public class StatisticsScreen extends AbstractTablexiaScreen<Void> {
 	
 	private static final String BACKGROUND_TEXTURE = CommonAssets.WOODEN_BACKGOURND;
 	
-- 
GitLab