diff --git a/android/assets/text/game/pursuit/pursuit_cs.properties b/android/assets/text/game/pursuit/pursuit_cs.properties index 2ed959e6df1fa9c2a08db3a7711e8d23f227b856..dc17f3cded444ed4a20baf89804bbe80aa1e1362 100644 --- a/android/assets/text/game/pursuit/pursuit_cs.properties +++ b/android/assets/text/game/pursuit/pursuit_cs.properties @@ -1,8 +1,13 @@ +victory_text_hours= {0}h +victory_text_minutes= {0}min +victory_text_seconds= {0}s +victory_text_time=ÄŚas: {0} +victory_text_moves=PoÄŤet tahĹŻ: {0} game_pronasledovani_loadingtext=Sestav mapu pĹ™emisĹĄovánĂm a otáčenĂm jednotlivĂ˝ch dĂlkĹŻ. game_pronasledovani_victorytext_threestars=PoÄŤkat si na lupiÄŤe v jejich doupÄ›ti, tak to je povedenĂ˝ kousek! game_pronasledovani_victorytext_twostars=ZaÄŤĂnajĂcĂ dektiv by se za takovĂ˝ vĂ˝kon nemusel stydÄ›t! game_pronasledovani_victorytext_onestar=To bylo teda na poslednĂ chvĂli! Zapracuj na sobÄ› ještÄ›. -game_pronasledovani_victorytext_gameover=LupiÄŤi uĹľ si rozdÄ›lujĂ koĹ™ist a ty ještÄ› skládáš. To bude chtĂt ještÄ› trĂ©nink! +game_pronasledovani_victorytext_gameover=LupiÄŤi uĹľ si rozdÄ›lujĂ koĹ™ist a ty ještÄ› skládáš.\nTo bude chtĂt ještÄ› trĂ©nink! diff --git a/android/assets/text/game/pursuit/pursuit_de.properties b/android/assets/text/game/pursuit/pursuit_de.properties index 2afd62aeeb3940fa90a005344054bfac53f85bf1..2b6f9ba82bc81cb95cbf6c3d9601313415f5bb0b 100644 --- a/android/assets/text/game/pursuit/pursuit_de.properties +++ b/android/assets/text/game/pursuit/pursuit_de.properties @@ -1,5 +1,10 @@ +victory_text_hours= {0}h +victory_text_minutes= {0}min +victory_text_seconds= {0}s +victory_text_time=Zeit: {0} +victory_text_moves=Anzahl der ZĂĽge: {0} game_pronasledovani_loadingtext=Stelle die Karte zusammen, indem du einzelne Teile verschiebst und drehst. -game_pronasledovani_victorytext_threestars=Auf die Einbrecher in ihrem Unterschlupf warten, das ist ein MeisterstĂĽck! -game_pronasledovani_victorytext_twostars=Ein angehender Detektiv muss sich fĂĽr eine solche Leistung nicht schämen! +game_pronasledovani_victorytext_threestars=Auf die Einbrecher in ihrem Unterschlupf warten,\ndas ist ein MeisterstĂĽck! +game_pronasledovani_victorytext_twostars=Ein angehender Detektiv muss sich fĂĽr eine solche\nLeistung nicht schämen! game_pronasledovani_victorytext_onestar=Das war aber in letzter Sekunde! Du musst noch an dir arbeiten. -game_pronasledovani_victorytext_gameover=Die Einbrecher teilen die Beute auf und du legst noch die Karte zusammen. Da ist noch Training nötig! +game_pronasledovani_victorytext_gameover=Die Einbrecher teilen die Beute auf und du legst noch\ndie Karte zusammen. Da ist noch Training nötig! diff --git a/android/assets/text/game/pursuit/pursuit_sk.properties b/android/assets/text/game/pursuit/pursuit_sk.properties index 88ea78687604dd2f965b6011abb668b06b22cdff..176b11db572baa9086bdcb6f42232a3bf5304aab 100644 --- a/android/assets/text/game/pursuit/pursuit_sk.properties +++ b/android/assets/text/game/pursuit/pursuit_sk.properties @@ -1,5 +1,10 @@ +victory_text_hours= {0}h +victory_text_minutes= {0}min +victory_text_seconds= {0}s +victory_text_time=ÄŚas: {0} +victory_text_moves=PoÄŤet ĹĄahov: {0} game_pronasledovani_loadingtext=Zostav mapu premiestĹovania a otáčania jednotlivĂ˝ch dielcov. game_pronasledovani_victorytext_threestars=PoÄŤkaĹĄ si na lupiÄŤa v jeho skrýši, tak to bol podarenĂ˝ kĂşsok! game_pronasledovani_victorytext_twostars=ZaÄŤĂnajĂşci detektĂv by sa za takĂ˝ vĂ˝kon nemusel hanbiĹĄ! game_pronasledovani_victorytext_onestar=To teda bolo na poslednĂş chvĂÄľu. Zapracuj ešte na sebe! -game_pronasledovani_victorytext_gameover=LupiÄŤi si uĹľ rozdelili korisĹĄ a ty ešte skladáš. To bude chcieĹĄ ešte trĂ©ning! +game_pronasledovani_victorytext_gameover=LupiÄŤi si uĹľ rozdelili korisĹĄ a ty ešte skladáš.\nTo bude chcieĹĄ ešte trĂ©ning! diff --git a/core/assets/de/game/pursuit/sfx/help.mp3 b/core/assets/de/game/pursuit/sfx/help.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..94529a0f98dae882b7c611d71661698165d21f3b Binary files /dev/null and b/core/assets/de/game/pursuit/sfx/help.mp3 differ diff --git a/core/assets/de/game/pursuit/sfx/result_0.mp3 b/core/assets/de/game/pursuit/sfx/result_0.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..7901255711f16f4b86f6159aa5ad374a3c6effc8 Binary files /dev/null and b/core/assets/de/game/pursuit/sfx/result_0.mp3 differ diff --git a/core/assets/de/game/pursuit/sfx/result_1.mp3 b/core/assets/de/game/pursuit/sfx/result_1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e7c735b99a2e359ec186ab5f0ebe7c860faf2de4 Binary files /dev/null and b/core/assets/de/game/pursuit/sfx/result_1.mp3 differ diff --git a/core/assets/de/game/pursuit/sfx/result_2.mp3 b/core/assets/de/game/pursuit/sfx/result_2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..781a54f12af65a46ced9bd7517c9303b036e8889 Binary files /dev/null and b/core/assets/de/game/pursuit/sfx/result_2.mp3 differ diff --git a/core/assets/de/game/pursuit/sfx/result_3.mp3 b/core/assets/de/game/pursuit/sfx/result_3.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..50b966a40310243bfae1e788ffad7589dacf7e10 Binary files /dev/null and b/core/assets/de/game/pursuit/sfx/result_3.mp3 differ diff --git a/core/assets/sk/game/pursuit/sfx/help.mp3 b/core/assets/sk/game/pursuit/sfx/help.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..daeeefef73fc66a0d6fe1b4faae32e6939edff58 Binary files /dev/null and b/core/assets/sk/game/pursuit/sfx/help.mp3 differ diff --git a/core/assets/sk/game/pursuit/sfx/result_0.mp3 b/core/assets/sk/game/pursuit/sfx/result_0.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f4848b72327a15b69fc5c02953a695387e3e5b5a Binary files /dev/null and b/core/assets/sk/game/pursuit/sfx/result_0.mp3 differ diff --git a/core/assets/sk/game/pursuit/sfx/result_1.mp3 b/core/assets/sk/game/pursuit/sfx/result_1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..3838731b60408dbd030f5cbb93e8598831d0ddf6 Binary files /dev/null and b/core/assets/sk/game/pursuit/sfx/result_1.mp3 differ diff --git a/core/assets/sk/game/pursuit/sfx/result_2.mp3 b/core/assets/sk/game/pursuit/sfx/result_2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..ee53f6f3b2890aa848d86116276381ed125e59d0 Binary files /dev/null and b/core/assets/sk/game/pursuit/sfx/result_2.mp3 differ diff --git a/core/assets/sk/game/pursuit/sfx/result_3.mp3 b/core/assets/sk/game/pursuit/sfx/result_3.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c41e7f6bf88509b94adae25946ca0bf18bc01ae3 Binary files /dev/null and b/core/assets/sk/game/pursuit/sfx/result_3.mp3 differ 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 4f217d5e3945ad6552c0b6c9700c6e1c445e7a97..3b42f55d6246b0ab264d7c763ef14614fe163f10 100644 --- a/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java +++ b/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java @@ -8,6 +8,7 @@ import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.utils.Array; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -22,6 +23,7 @@ import cz.nic.tablexia.game.games.pursuit.helper.GameRulesHelper; import cz.nic.tablexia.game.games.pursuit.helper.TextureHelper; import cz.nic.tablexia.game.games.pursuit.listener.VehicleDragListener; import cz.nic.tablexia.game.games.pursuit.model.Grid; +import cz.nic.tablexia.util.Log; import cz.nic.tablexia.util.Point; import cz.nic.tablexia.game.games.pursuit.model.PuzzlePiece; import cz.nic.tablexia.game.games.pursuit.model.Vehicle; @@ -45,10 +47,10 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> { private enum ResultMapping { - NO_STAR_TEXT (GameResult.NO_STAR, PursuitAssets.VICTORYTEXT_NOSTAR, PursuitAssets.VICTORYSPEECH_NOSTAR), - ONE_STAR_TEXT (GameResult.ONE_STAR, PursuitAssets.VICTORYTEXT_ONESTAR, PursuitAssets.VICTORYSPEECH_ONESTAR), - TWO_STAR_TEXT (GameResult.TWO_STAR, PursuitAssets.VICTORYTEXT_TWOSTARS, PursuitAssets.VICTORYSPEECH_TWOSTAR), - THREE_STAR_TEXT (GameResult.THREE_STAR, PursuitAssets.VICTORYTEXT_THREESTARS, PursuitAssets.VICTORYSPEECH_THREESTAR); + NO_STAR_TEXT(GameResult.NO_STAR, PursuitAssets.VICTORYTEXT_NOSTAR, PursuitAssets.VICTORYSPEECH_NOSTAR), + ONE_STAR_TEXT(GameResult.ONE_STAR, PursuitAssets.VICTORYTEXT_ONESTAR, PursuitAssets.VICTORYSPEECH_ONESTAR), + TWO_STAR_TEXT(GameResult.TWO_STAR, PursuitAssets.VICTORYTEXT_TWOSTARS, PursuitAssets.VICTORYSPEECH_TWOSTAR), + THREE_STAR_TEXT(GameResult.THREE_STAR, PursuitAssets.VICTORYTEXT_THREESTARS, PursuitAssets.VICTORYSPEECH_THREESTAR); private final GameResult gameResult; private final String textKey; @@ -78,10 +80,16 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> { } } - private static final Point SCREEN_SIZE = new Point(TablexiaSettings.getWorldWidth(),TablexiaSettings.getMinWorldHeight()); + private static final Point SCREEN_SIZE = new Point(TablexiaSettings.getWorldWidth(), TablexiaSettings.getMinWorldHeight()); private static final int GRID_PADDING = 10; - private static final String SCORE_KEY_MOVE_COUNT = "move_count"; + private static final String SUMMARY_TEXT_TIME_HOURS = "victory_text_hours"; + private static final String SUMMARY_TEXT_TIME_MINUTES = "victory_text_minutes"; + private static final String SUMMARY_TEXT_TIME_SECONDS = "victory_text_seconds"; + private static final String SUMMARY_TEXT_MOVE_COUNT = "victory_text_moves"; + private static final String SUMMARY_TEXT_TIME = "victory_text_time"; + + private static final String SCORE_KEY_MOVE_COUNT = "move_count"; private Group contentGroup; private Grid grid; @@ -110,7 +118,7 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> { @Override protected void gameLoaded(Map<String, String> gameState) { gridColumnCount = GameRulesHelper.getNumberOfColumns(getGameDifficulty()); - overlappedPieceZIndex = (int)Math.pow(gridColumnCount,2)-1; + overlappedPieceZIndex = (int) Math.pow(gridColumnCount, 2) - 1; contentGroup = new Group(); contentGroup.setSize(SCREEN_SIZE.x, SCREEN_SIZE.y); getStage().addActor(contentGroup); @@ -123,7 +131,7 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> { dragAndRotateActorListener = new DragAndRotateActorListener(new DragAndRotateActorListener.IOnRotationFinished() { @Override public void onRotationFinished() { - setGameScore(SCORE_KEY_MOVE_COUNT,movesCounter++); + setGameScore(SCORE_KEY_MOVE_COUNT, movesCounter++); } }) { @Override @@ -160,7 +168,7 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> { Action onPiecesSwitchFinishedAction = new Action() { @Override public boolean act(float delta) { - setGameScore(SCORE_KEY_MOVE_COUNT,movesCounter++); + setGameScore(SCORE_KEY_MOVE_COUNT, movesCounter++); dragAndRotateActorListener.setDraggedActor(null); dragAndRotateActorListener.setPerformingAction(false); grid.unscaleAllPieces(); @@ -207,16 +215,18 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> { private void prepareVehicle() { VehicleType vehicleType = TextureHelper.getVehicleTextureName(getRandom(), mapNumber); - Point vehiclePosition = new Point(0,0); + Point vehiclePosition = new Point(0, 0); Point vehicleSize = new Point(vehicleType.getVehicleSize().x, vehicleType.getVehicleSize().y); vehicle = new Vehicle(getScreenTextureRegion(vehicleType.getTextureName()), vehiclePosition, vehicleSize); vehicle.addListener(new VehicleDragListener(vehicle, getData(), new Point(roadMap.getRegionWidth(), roadMap.getRegionHeight()), finishFlag, new VehicleDragListener.OnVehicleDragCompleteListener() { @Override public void onVehicleDragComplete() { - gameComplete(); - //remove all actor listeners - for(EventListener el: vehicle.getListeners()){ - vehicle.removeListener(el); + if(!getGame().isFinished()){ + gameComplete(); + //remove all actor listeners + for (EventListener el : vehicle.getListeners()) { + vehicle.removeListener(el); + } } } })); @@ -236,15 +246,15 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> { } //sets the position according to completed map rotation - private void showCheckpoints(){ - Point gridRotationCenter = new Point(grid.getWidth()/2,grid.getHeight()/2); + private void showCheckpoints() { + Point gridRotationCenter = new Point(grid.getWidth() / 2, grid.getHeight() / 2); //flag Point flagPosition = TextureHelper.getFinishFlagPosition(grid.getWidth(), mapNumber); - Point flagPositonConsideringMapRotation =ArithmeticsHelper.translatePositionAccordingToRotation(flagPosition, grid.getRotation(), gridRotationCenter); + Point flagPositonConsideringMapRotation = ArithmeticsHelper.translatePositionAccordingToRotation(flagPosition, grid.getRotation(), gridRotationCenter); //positioning both flag and vehicle by center //flag is not rotated - Point flagPoleOrigin = new Point(finishFlag.getWidth()*TextureHelper.FLAG_BLACK_DOT_RELATIVE_POSITION.x,finishFlag.getHeight()*TextureHelper.FLAG_BLACK_DOT_RELATIVE_POSITION.y); - finishFlag.setPosition(flagPositonConsideringMapRotation.x-flagPoleOrigin.x, flagPositonConsideringMapRotation.y-flagPoleOrigin.y); + Point flagPoleOrigin = new Point(finishFlag.getWidth() * TextureHelper.FLAG_BLACK_DOT_RELATIVE_POSITION.x, finishFlag.getHeight() * TextureHelper.FLAG_BLACK_DOT_RELATIVE_POSITION.y); + finishFlag.setPosition(flagPositonConsideringMapRotation.x - flagPoleOrigin.x, flagPositonConsideringMapRotation.y - flagPoleOrigin.y); //vehicle Point vehiclePosition = TextureHelper.getVehicleStartPosition(grid.getWidth(), mapNumber); @@ -258,7 +268,8 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> { @Override protected List<SummaryMessage> getSummaryMessageForGameResult(Game game) { - return null; + return Arrays.asList(new SummaryMessage(SummaryImage.TIME, getFormattedText(SUMMARY_TEXT_TIME, getOverallTimeText(game.getGameDuration()))), + new SummaryMessage(SummaryImage.STATS, getFormattedText(SUMMARY_TEXT_MOVE_COUNT, game.getGameScore(SCORE_KEY_MOVE_COUNT, "0")))); } @Override @@ -270,4 +281,28 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> { protected String getSoundNameForGameResult(GameResult gameResult) { return ResultMapping.getResultTextMappingForGameResult(gameResult).getSoundName(); } + + private String getOverallTimeText(float millis){ + String time=""; + StringBuilder sb = new StringBuilder(); + int seconds = (int) (millis / 1000) % 60 ; + int minutes = (int) ((millis / (1000*60)) % 60); + int hours = (int) ((millis / (1000*60*60)) % 24); + Log.info(getClass(),"TIME: "+hours+"h, "+minutes+"m, "+seconds+"s"); + if(hours!=0){ + Log.info(getClass(),"HOURS"); + sb.append(getFormattedText(SUMMARY_TEXT_TIME_HOURS,hours)); + } + if(minutes!=0){ + Log.info(getClass(),"MINUTES"); + sb.append(getFormattedText(SUMMARY_TEXT_TIME_MINUTES,minutes)); + } + if(seconds!=0){ + Log.info(getClass(),"SECONDS"); + sb.append(getFormattedText(SUMMARY_TEXT_TIME_SECONDS,seconds)); + } + return sb.toString(); + } + + }