Skip to content
Snippets Groups Projects
Commit 16a47edc authored by v.tarantik's avatar v.tarantik
Browse files

#32 vicory screen data loading

parent b3dbff79
No related branches found
No related tags found
No related merge requests found
Showing
with 110 additions and 31 deletions
File added
File added
File added
File added
File added
......@@ -555,6 +555,7 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T>
//////////////////////////// GAME SCORE
public <T> void setGameScore(String key, T value) {
Log.info(getClass(),"SET GAME SCORE: "+key);
if (game != null) {
game.setGameScore(key, String.valueOf(value));
}
......
......@@ -10,11 +10,13 @@ import cz.nic.tablexia.game.games.in_the_darkness.InTheDarknessGame;
import cz.nic.tablexia.game.games.kidnapping.KidnappingGame;
import cz.nic.tablexia.game.games.night_watch.NightWatchGame;
import cz.nic.tablexia.game.games.pursuit.PursuitGame;
import cz.nic.tablexia.game.games.pursuit.helper.GameRulesHelper;
import cz.nic.tablexia.game.games.robbery.RobberyGame;
import cz.nic.tablexia.game.games.shooting_range.ShootingRangeGame;
import cz.nic.tablexia.loader.application.ApplicationTextManager;
import cz.nic.tablexia.menu.AbstractMenu;
import cz.nic.tablexia.menu.IMenuItem;
import cz.nic.tablexia.util.Log;
public enum GameDefinition implements ApplicationEvent, IMenuItem {
......@@ -37,7 +39,9 @@ public enum GameDefinition implements ApplicationEvent, IMenuItem {
PURSUIT(2, "game_pursuit_title", PursuitGame.class, false, new GameResultResolver() {
@Override
public AbstractTablexiaGame.GameResult getGameResult(Map<String, String> gameScore) {
return AbstractTablexiaGame.GameResult.NO_STAR;
float time = Float.valueOf(gameScore.get(PursuitGame.SCORE_KEY_TIME));
int difficulty = Integer.valueOf(gameScore.get(PursuitGame.SCORE_KEY_DIFFICULTY));
return GameRulesHelper.getNumberOfStarsForMoves(difficulty, time);
}
}),
KIDNAPPING(3, "game_kidnapping_title", KidnappingGame.class, false, new GameResultResolver() {
......
......@@ -6,6 +6,7 @@ import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.TimeUtils;
import java.util.Map;
......@@ -13,6 +14,7 @@ import cz.nic.tablexia.TablexiaSettings;
import cz.nic.tablexia.game.AbstractTablexiaGame;
import cz.nic.tablexia.game.games.pursuit.action.RotateAndMovePieceInPosition;
import cz.nic.tablexia.game.games.pursuit.action.RotatePieceToClosestAngle;
import cz.nic.tablexia.game.games.pursuit.assets.PursuitAssets;
import cz.nic.tablexia.game.games.pursuit.helper.ArithmeticsHelper;
import cz.nic.tablexia.game.games.pursuit.helper.GameRulesHelper;
import cz.nic.tablexia.game.games.pursuit.helper.TextureHelper;
......@@ -31,12 +33,50 @@ import cz.nic.tablexia.util.ui.TablexiaNoBlendingImage;
* Created by Václav Tarantík on 6.3.15.
*/
public class PursuitGame extends AbstractTablexiaGame<int[][]> {
private static final int SCREEN_WIDTH = TablexiaSettings.getWorldWidth();
private static final int SCREEN_MIN_HEIGHT = TablexiaSettings.getMinWorldHeight();
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);
private final GameResult gameResult;
private final String textKey;
private final String soundName;
ResultMapping(GameResult gameResult, String textKey, String soundName) {
this.gameResult = gameResult;
this.textKey = textKey;
this.soundName = soundName;
}
public String getTextKey() {
return textKey;
}
public String getSoundName() {
return soundName;
}
public static ResultMapping getResultTextMappingForGameResult(GameResult gameResult) {
for (ResultMapping resultMapping : ResultMapping.values()) {
if (resultMapping.gameResult.equals(gameResult)) {
return resultMapping;
}
}
return null;
}
}
private static final Point SCREEN_SIZE = new Point(TablexiaSettings.getWorldWidth(),TablexiaSettings.getMinWorldHeight());
private static final int GRID_PADDING = 10;
private static final int GRID_COLUMNS = 3;
private static final int OVERLAPPED_PIECE_ZINDEX = 7;//pieces count -1
public static final String SCORE_KEY_TIME = "time";
public static final String SCORE_KEY_DIFFICULTY = "difficulty";
private static final String SCORE_KEY_MOVE_COUNT = "move_count";
private Group contentGroup;
private Grid grid;
private TablexiaNoBlendingImage backgroundImage;
......@@ -63,10 +103,11 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> {
@Override
protected void gameLoaded(Map<String, String> gameState) {
setGameScore(SCORE_KEY_DIFFICULTY,getGameDifficulty().ordinal());
contentGroup = new Group();
contentGroup.setSize(SCREEN_WIDTH, SCREEN_MIN_HEIGHT);
contentGroup.setSize(SCREEN_SIZE.x, SCREEN_SIZE.y);
getStage().addActor(contentGroup);
startTime = System.currentTimeMillis();
startTime = TimeUtils.millis();
prepareBackground();
prepareGrid();
......@@ -76,7 +117,7 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> {
dragAndRotateActorListener = new DragAndRotateActorListener(new DragAndRotateActorListener.IOnRotationFinished() {
@Override
public void onRotationFinished() {
movesCounter++;
setGameScore(SCORE_KEY_MOVE_COUNT,movesCounter++);
}
}) {
@Override
......@@ -114,7 +155,7 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> {
Action onPiecesSwitchFinishedAction = new Action() {
@Override
public boolean act(float delta) {
movesCounter++;
setGameScore(SCORE_KEY_MOVE_COUNT,movesCounter++);
dragAndRotateActorListener.setDraggedActor(null);
dragAndRotateActorListener.setPerformingAction(false);
grid.unscaleAllPieces();
......@@ -131,6 +172,10 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> {
}
if (grid.allPiecesInCorrectPositions()) {
backgroundImage.removeListener(dragAndRotateActorListener);
endTime = TimeUtils.millis();
float time = endTime-startTime;
Log.info(getClass(),"TIME: "+time);
setGameScore(SCORE_KEY_TIME, time);
showCheckpoints();
}
return true;
......@@ -147,7 +192,7 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> {
private void prepareBackground() {
backgroundImage = new TablexiaNoBlendingImage(getScreenTextureRegion(TextureHelper.getBgTexturePath()));
backgroundImage.setSize(SCREEN_WIDTH, SCREEN_MIN_HEIGHT);
backgroundImage.setSize(SCREEN_SIZE.x, SCREEN_SIZE.y);
contentGroup.addActor(backgroundImage);
}
......@@ -155,7 +200,7 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> {
private void prepareGrid() {
TextureRegion mapTextureRegion = getScreenTextureRegion(TextureHelper.getMapFullName(mapNumber));
grid = new Grid(SCREEN_WIDTH / 2 - SCREEN_MIN_HEIGHT / 2, GRID_PADDING, SCREEN_MIN_HEIGHT - 2 * GRID_PADDING, GRID_COLUMNS, mapTextureRegion, getRandom());
grid = new Grid(SCREEN_SIZE.x / 2 - SCREEN_SIZE.y / 2, GRID_PADDING, SCREEN_SIZE.y - 2 * GRID_PADDING, GRID_COLUMNS, mapTextureRegion, getRandom());
contentGroup.addActor(grid);
}
......@@ -167,10 +212,8 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> {
vehicle.addListener(new VehicleDragListener(vehicle, getData(), new Point(roadMap.getRegionWidth(), roadMap.getRegionHeight()), finishFlag, new VehicleDragListener.OnVehicleDragCompleteListener() {
@Override
public void onVehicleDragComplete() {
endTime = System.currentTimeMillis();
Log.info(getClass(), "Moves : " + movesCounter);
int starsCount = GameRulesHelper.getNumberOfStarsForMoves(getGameDifficulty().ordinal(), endTime - startTime);
gameComplete();
//TODO disable listener
}
}));
vehicle.setDebug(TablexiaSettings.getInstance().isShowBoundingBoxes());
......@@ -212,11 +255,11 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> {
@Override
protected String getTextKeyForGameResult(GameResult gameResult) {
return null;
return ResultMapping.getResultTextMappingForGameResult(gameResult).getTextKey();
}
@Override
protected String getSoundNameForGameResult(GameResult gameResult) {
return null;
return ResultMapping.getResultTextMappingForGameResult(gameResult).getSoundName();
}
}
......@@ -4,9 +4,38 @@ package cz.nic.tablexia.game.games.pursuit.assets;
* Created by Václav Tarantík on 18.6.15.
*/
public class PursuitAssets {
public static final String MAPS_DIR ="maps/";
public static final String SOUNDS_PATH = "sfx/";
public static final String MP3_EXTENSION = ".mp3";
public static final String MAPS_DIR = "maps/";
public static final String VEHICLES_DIR = "vehicles/";
public static final String BACKGROUND ="background2";
public static final String BACKGROUND = "background2";
public static final String FINISH_FLAG = VEHICLES_DIR + "flag";
//SOUNDS
public static final String SOUND_ROTATION = SOUNDS_PATH+"rotate"+MP3_EXTENSION;
public static final String SOUND_SWITCH = SOUNDS_PATH+"switch"+MP3_EXTENSION;
public static final String SOUND_LIFT = SOUNDS_PATH+"lift"+MP3_EXTENSION;
public static final String SOUND_BOAT = SOUNDS_PATH+"boat_1"+MP3_EXTENSION;
public static final String SOUND_CAR_1 = SOUNDS_PATH+"car_1"+MP3_EXTENSION;
public static final String SOUND_CAR_2 = SOUNDS_PATH+"car_2"+MP3_EXTENSION;
public static final String SOUND_CAR_3 = SOUNDS_PATH+"car_3"+MP3_EXTENSION;
public static final String SOUND_CAR_4 = SOUNDS_PATH+"car_4"+MP3_EXTENSION;
public static final String SOUND_MOTORCYCLE = SOUNDS_PATH+"momtorcycle_1"+MP3_EXTENSION;
public static final String SOUND_TRAIN_1 = SOUNDS_PATH+"train_1"+MP3_EXTENSION;
public static final String SOUND_TRAIN_2 = SOUNDS_PATH+"train_2"+MP3_EXTENSION;
public static final String SOUND_HELP = SOUNDS_PATH+"help"+MP3_EXTENSION;
public static final String VICTORYSPEECH_NOSTAR = SOUNDS_PATH+"result_0"+MP3_EXTENSION;
public static final String VICTORYSPEECH_ONESTAR = SOUNDS_PATH+"result_1"+MP3_EXTENSION;
public static final String VICTORYSPEECH_TWOSTAR = SOUNDS_PATH+"result_2"+MP3_EXTENSION;
public static final String VICTORYSPEECH_THREESTAR = SOUNDS_PATH+"result_3"+MP3_EXTENSION;
//TEXT+
public static final String HELP_TEXT = "game_pronasledovani_loadingtext";
public static final String VICTORYTEXT_NOSTAR = "game_pronasledovani_victorytext_gameover";
public static final String VICTORYTEXT_ONESTAR = "game_pronasledovani_victorytext_onestar";
public static final String VICTORYTEXT_TWOSTARS = "game_pronasledovani_victorytext_twostars";
public static final String VICTORYTEXT_THREESTARS = "game_pronasledovani_victorytext_threestars";
public static final String FINISH_FLAG = VEHICLES_DIR+"flag";
}
package cz.nic.tablexia.game.games.pursuit.helper;
import cz.nic.tablexia.game.AbstractTablexiaGame;
/**
* Created by Václav Tarantík on 27.7.15.
*/
public class GameRulesHelper {
public static int getNumberOfStarsForMoves(int difficulty,float millis){
public static AbstractTablexiaGame.GameResult getNumberOfStarsForMoves(int difficulty,float millis){
float seconds = millis/1000;
switch (difficulty) {
case 0:
if (seconds >= 300) {
return 0;
return AbstractTablexiaGame.GameResult.NO_STAR;
} else if (seconds >= 160) {
return 1;
return AbstractTablexiaGame.GameResult.ONE_STAR;
} else if (seconds >= 80) {
return 2;
return AbstractTablexiaGame.GameResult.TWO_STAR;
} else {
return 3;
return AbstractTablexiaGame.GameResult.THREE_STAR;
}
case 1:
if (seconds >= 600) {
return 0;
return AbstractTablexiaGame.GameResult.NO_STAR;
} else if (seconds >= 360) {
return 1;
return AbstractTablexiaGame.GameResult.ONE_STAR;
} else if (seconds >= 160) {
return 2;
return AbstractTablexiaGame.GameResult.TWO_STAR;
} else {
return 3;
return AbstractTablexiaGame.GameResult.THREE_STAR;
}
case 2:
if (seconds >= 800) {
return 0;
return AbstractTablexiaGame.GameResult.NO_STAR;
} else if (seconds >= 460) {
return 1;
return AbstractTablexiaGame.GameResult.ONE_STAR;
} else if (seconds >= 320) {
return 2;
return AbstractTablexiaGame.GameResult.TWO_STAR;
} else {
return 3;
return AbstractTablexiaGame.GameResult.THREE_STAR;
}
}
return 0;
return AbstractTablexiaGame.GameResult.NO_STAR;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment