diff --git a/core/src/cz/nic/tablexia/game/games/in_the_darkness/InTheDarknessGame.java b/core/src/cz/nic/tablexia/game/games/in_the_darkness/InTheDarknessGame.java index 91601e64da0a1e17ca19a33b9007ae74c37fb5a7..8b79604d820cf263f7244b9943ddd702368ddaf7 100644 --- a/core/src/cz/nic/tablexia/game/games/in_the_darkness/InTheDarknessGame.java +++ b/core/src/cz/nic/tablexia/game/games/in_the_darkness/InTheDarknessGame.java @@ -34,6 +34,7 @@ import cz.nic.tablexia.game.games.in_the_darkness.map.mapobject.MapObjectType; import cz.nic.tablexia.game.games.in_the_darkness.map.tile.Tile; import cz.nic.tablexia.game.games.in_the_darkness.map.widget.MapWidget; import cz.nic.tablexia.loader.application.ApplicationTextManager; +import cz.nic.tablexia.model.game.GameDAO; import cz.nic.tablexia.shared.model.Game; import cz.nic.tablexia.util.Log; import cz.nic.tablexia.util.ScaleUtil; @@ -510,7 +511,7 @@ public class InTheDarknessGame extends AbstractTablexiaGame<List<MapWidget>> imp } private void goToPlayMode() { - setGameScore(SCORE_KEY_PLANNING_DURATION, getGameScoreFloat(SCORE_KEY_PLANNING_DURATION, 0f) + (System.currentTimeMillis() - planningStartTime - getGame().getAllPausesDuration())); + setGameScore(SCORE_KEY_PLANNING_DURATION, getGameScoreFloat(SCORE_KEY_PLANNING_DURATION, 0f) + (System.currentTimeMillis() - planningStartTime - GameDAO.getAllPausesDuration(getGame()))); disableStartButton(true); actionsWidget.disableActions(); actionsStripWidget.disableControl(); diff --git a/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java b/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java index 7a40be2d4c78b89eecd3a42f00c5f4899488a70e..ac676afd5259be9d0f5f86eb794b6a14184ccef7 100644 --- a/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java +++ b/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java @@ -62,11 +62,11 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> { public static class GameResultResolver implements GameDefinition.GameResultResolver { @Override public GameResult getGameCupsResult(Game game) { - return GameRulesHelper.getNumberOfStarsForTime(GameDifficulty.getGameDifficultyForDifficultyNumber(game.getGameDifficulty()), game.getGameDuration()); + return GameRulesHelper.getNumberOfStarsForTime(GameDifficulty.getGameDifficultyForDifficultyNumber(game.getGameDifficulty()), GameDAO.getGameDuration(game)); } @Override public float getGameScoreResult(Game game) { - return game.getGameDuration() != null ? (float)game.getGameDuration() : 0; + return GameDAO.getGameDuration(game) != null ? (float)GameDAO.getGameDuration(game) : 0; } } @@ -489,7 +489,7 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> { @Override protected List<SummaryMessage> getSummaryMessageForGameResult(Game game) { - return Arrays.asList(new SummaryMessage(SummaryImage.TIME, getFormattedText(SUMMARY_TEXT_TIME, getOverallTimeText(game.getGameDuration()))), + return Arrays.asList(new SummaryMessage(SummaryImage.TIME, getFormattedText(SUMMARY_TEXT_TIME, getOverallTimeText(GameDAO.getGameDuration(game)))), new SummaryMessage(SummaryImage.STATS, getFormattedText(SUMMARY_TEXT_MOVE_COUNT, game.getGameScore(SCORE_KEY_MOVE_COUNT, "0")))); } diff --git a/core/src/cz/nic/tablexia/model/game/GameDAO.java b/core/src/cz/nic/tablexia/model/game/GameDAO.java index 445f0fb88f2789c4c771f8b4591f1031131b6370..190e59f635b3a8dd8b9aa55ae808702f1f8242c1 100644 --- a/core/src/cz/nic/tablexia/model/game/GameDAO.java +++ b/core/src/cz/nic/tablexia/model/game/GameDAO.java @@ -17,6 +17,7 @@ import cz.nic.tablexia.game.common.TablexiaRandom; import cz.nic.tablexia.game.difficulty.GameDifficulty; import cz.nic.tablexia.model.UserDAO; import cz.nic.tablexia.shared.model.Game; +import cz.nic.tablexia.shared.model.GamePause; import cz.nic.tablexia.shared.model.GameScore; import cz.nic.tablexia.shared.model.User; import cz.nic.tablexia.util.Log; @@ -74,6 +75,25 @@ public class GameDAO { return null; } + public static Long getAllPausesDuration(Game game) { + long pausesDuration = 0; + List<GamePause> gamePauses = GamePauseDAO.selectGamePausesForGame(game); + + for (GamePause gamePause : gamePauses) { + if (gamePause.hasStartTime() && gamePause.hasEndTime()) { + pausesDuration = pausesDuration + (gamePause.getEndTime() - gamePause.getStartTime()); + } + } + return pausesDuration; + } + + public static Long getGameDuration(Game game) { + if (game.getEndTime() == null || game.getGameStartTime() == null) { + return null; + } + return game.getEndTime() - game.getGameStartTime() - getAllPausesDuration(game); + } + public static void setGameScore(final Game game, final String key, final String value) { new Thread(new Runnable() { @Override