Skip to content
Snippets Groups Projects
Commit 5ecf4787 authored by Matyáš Latner's avatar Matyáš Latner
Browse files

Merge branch 'feature-robbery' into 'devel'

Feature robbery



See merge request !197
parents 01aaab85 23f212e3
No related branches found
No related tags found
No related merge requests found
......@@ -48,7 +48,7 @@ game_averagescore_duration=Priemerné trvanie hry\:
game_robbery_title=Lupiči
game_robbery_description=Precvičovanie pracovnej pamäti
game_robbery_preloader=Na začiatku hry si prečítaj pravidlo, podľa ktorého spoznáš zlodeja. Zapamätaj si\u00A0ho. Sleduj ľudí vchádzajúcich do banky a\u00A0dotykom označ zlodejov.
game_robbery_preloader=Prečítaj a zapamätaj si pravidlo, podľa ktorého spoznáš lupiča. Sleduj ľudí prichádzajúcich do miestnosti a dotykom lupiča označ.
game_kidnapping_title=Únos
game_kidnapping_description=Precvičovanie sluchovej pamäti
game_kidnapping_preloader1=Vypočuj a\u00A0zapamätaj si zvuk, ktorý si počul na križovatke.
......
......@@ -30,8 +30,8 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
public static class GameResultResolver implements GameDefinition.GameResultResolver {
@Override
public GameResult getGameCupsResult(Game game) {
int creaturesCount = Integer.valueOf(game.getGameScore(RobberyGame.SCORE_KEY_PERSON_NUMBER, "0")) + 1;
if (creaturesCount > 49) {
int creaturesCount = getFinalScore(game);
if (creaturesCount > 47) {
return AbstractTablexiaGame.GameResult.THREE_STAR;
} else if (creaturesCount > 29) {
return AbstractTablexiaGame.GameResult.TWO_STAR;
......@@ -44,7 +44,14 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
@Override
public float getGameScoreResult(Game game) {
return Float.parseFloat(game.getGameScore(RobberyGame.SCORE_KEY_PERSON_NUMBER, "0")) + 1;
return getFinalScore(game);
}
private int getFinalScore(Game game) {
int numOfPerson = Integer.valueOf(game.getGameScore(RobberyGame.SCORE_KEY_PERSON_NUMBER, "0"));
int wrongPerson = Integer.valueOf(game.getGameScore(RobberyGame.SCORE_KEY_INNOCENCE_PERSON, "0"));
int escapedThieves = Integer.valueOf(game.getGameScore(RobberyGame.SCORE_KEY_ESCAPED_THIEVES, "0"));
return numOfPerson - wrongPerson - escapedThieves;
}
}
......@@ -97,13 +104,13 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
public static int CREATURES_COUNT = 50;
public static int THIEVES_COUNT = 8;
public static int CREATURES_WIDTH = 193;
public static int CREATURES_HEIGHT = 480;
public static int CREATURES_WIDTH = 193;
public static int CREATURES_HEIGHT = 480;
private InputMultiplexer inputMultiplexer;
private AbstractTablexiaScreen<Void> actualScreen;
private GameRulesDefinition rulesDefinition;
private GameRulesDefinition forcedRulesDefinition;
private GameRulesDefinition forcedRulesDefinition;
private boolean isRootScreenVisible;
......@@ -115,83 +122,83 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
//////////////////////////// SCREEN LOADERS
@Override
protected void prepareGameSoundAssetNames(List<String> soundsFileNames) {
soundsFileNames.add(RobberyAssets.SOUND_ALARM);
soundsFileNames.add(RobberyAssets.SOUND_ERROR);
soundsFileNames.add(RobberyAssets.SOUND_CHAINS);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_FEMALE_1_IN);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_FEMALE_1_OUT);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_FEMALE_2_IN);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_FEMALE_2_OUT);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_MALE_1_IN);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_MALE_1_OUT);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_MALE_2_IN);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_MALE_2_OUT);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_MALE_3_IN);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_MALE_3_OUT);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_FEMALE_1_IN);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_FEMALE_1_OUT);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_FEMALE_2_IN);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_FEMALE_2_OUT);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_MALE_1_IN);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_MALE_1_OUT);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_MALE_2_IN);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_MALE_2_OUT);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_MALE_3_IN);
soundsFileNames.add(RobberyAssets.SOUND_STEPS_MALE_3_OUT);
}
@Override
protected GameRule prepareGameData(Map<String, String> gameState) {
rulesDefinition = forcedRulesDefinition != null ? forcedRulesDefinition : GameRulesDefinition.getRandomGameRuleForDifficulty(getGameDifficulty(), getRandom());
GameRule gameRule = rulesDefinition.getGameRuleInstance(getRandom(), CREATURES_COUNT, THIEVES_COUNT);
gameRule.generateCreatures(this);
rulesDefinition = forcedRulesDefinition != null ? forcedRulesDefinition : GameRulesDefinition.getRandomGameRuleForDifficulty(getGameDifficulty(), getRandom());
GameRule gameRule = rulesDefinition.getGameRuleInstance(getRandom(), CREATURES_COUNT, THIEVES_COUNT);
gameRule.generateCreatures(this);
actualCreatureNumber = getGameScoreInteger(SCORE_KEY_PERSON_NUMBER, 0);
thievesEscaped = getGameScoreInteger(SCORE_KEY_ESCAPED_THIEVES, 0);
innocencePersons = getGameScoreInteger(SCORE_KEY_INNOCENCE_PERSON, 0);
thievesCaught = getGameScoreInteger(SCORE_KEY_CAUGHT_THIEF, 0);
printScreenInfo("Game Rule", gameRule.getGameRuleDefinition().name());
printScreenInfo("Game Rule", gameRule.getGameRuleDefinition().name());
return gameRule;
}
//////////////////////////// INPUT PROCESSOR
@Override
public InputProcessor getInputProcessor() {
return inputMultiplexer;
}
//////////////////////////// SCREEN LIFECYCLE
public RobberyGame() {
isRootScreenVisible = false;
isComponentScreenVisible = false;
inputMultiplexer = new InputMultiplexer();
inputMultiplexer.addProcessor(getStage());
inputMultiplexer.addProcessor(getStage());
}
@Override
protected void gameLoaded(Map<String, String> gameState) {
setGameScore(SCORE_KEY_PERSON_COUNT, RobberyGame.CREATURES_COUNT);
setGameScore(SCORE_KEY_THIEVES_COUNT, RobberyGame.THIEVES_COUNT);
if (actualCreatureNumber > 0) {
showGameScreen(false);
} else {
showRuleScreen(false);
}
if (actualCreatureNumber > 0) {
showGameScreen(false);
} else {
showRuleScreen(false);
}
}
@Override
protected void gameVisible() {
isRootScreenVisible = true;
performComponentScreenVisible();
}
@Override
public void screenResized(int width, int height) {
if (actualScreen != null) {
actualScreen.resize(width, height);
}
}
@Override
public void gameRender(float delta) {
if (actualScreen != null) {
......@@ -211,7 +218,7 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
@Override
protected List<SummaryMessage> getSummaryMessageForGameResult(Game game) {
String identification = game.getUser().getGender() == User.Gender.MALE ? getText(SUMMARY_IDENTIFICATION_MALE_TEXT_KEY) : getText(SUMMARY_IDENTIFICATION_FEMALE_TEXT_KEY);
return Arrays.asList(new SummaryMessage(SummaryImage.STATS, getFormattedText(SUMMARY_TEXT_KEY, identification, game.getGameScore(SCORE_KEY_PERSON_NUMBER, "0"), game.getGameScoreValue(SCORE_KEY_PERSON_COUNT))));
return Arrays.asList(new SummaryMessage(SummaryImage.STATS, getFormattedText(SUMMARY_TEXT_KEY, identification, new RobberyGame.GameResultResolver().getFinalScore(game), game.getGameScoreValue(SCORE_KEY_PERSON_COUNT))));
}
@Override
......@@ -230,34 +237,34 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
private void showScreen(final AbstractTablexiaScreen newScreen, boolean transaction) {
isComponentScreenVisible = false;
if (transaction) {
performHideTransaction(new Runnable() {
@Override
public void run() {
processNewScreen(newScreen);
performShowTransaction(new Runnable() {
@Override
public void run() {
isComponentScreenVisible = true;
performComponentScreenVisible();
}
});
}
});
performHideTransaction(new Runnable() {
@Override
public void run() {
processNewScreen(newScreen);
performShowTransaction(new Runnable() {
@Override
public void run() {
isComponentScreenVisible = true;
performComponentScreenVisible();
}
});
}
});
} else {
processNewScreen(newScreen);
isComponentScreenVisible = true;
performComponentScreenVisible();
}
}
private void performComponentScreenVisible() {
if (isRootScreenVisible && isComponentScreenVisible) {
isComponentScreenVisible = false;
actualScreen.performScreenVisible();
}
}
private void processNewScreen(AbstractTablexiaScreen<Void> newScreen) {
AbstractTablexiaScreen<Void> lastScreen = actualScreen;
actualScreen = newScreen;
......@@ -265,7 +272,7 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
inputMultiplexer.addProcessor(newScreen.getInputProcessor());
newScreen.show();
if (lastScreen != null) {
if (lastScreen != null) {
processLastScreen(lastScreen);
}
}
......@@ -279,19 +286,19 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
public void showGameScreen(final boolean transaction) {
Gdx.app.postRunnable(new Runnable() {
@Override
public void run() {
showScreen(new GameScreen(RobberyGame.this), transaction);
}
});
@Override
public void run() {
showScreen(new GameScreen(RobberyGame.this), transaction);
}
});
}
private void showRuleScreen(final boolean transaction) {
Gdx.app.postRunnable(new Runnable() {
@Override
public void run() {
showScreen(new RuleScreen(RobberyGame.this), transaction);
showScreen(new RuleScreen(RobberyGame.this), transaction);
}
});
}
......@@ -299,12 +306,12 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
//////////////////////////// GAME SCORE
public int getActualCreatureNumber() {
return actualCreatureNumber;
}
public int getActualCreatureNumber() {
return actualCreatureNumber;
}
public void setActualCreatureNumber(int actualCreatureNumber) {
this.actualCreatureNumber = actualCreatureNumber;
public void setActualCreatureNumber(int actualCreatureNumber) {
this.actualCreatureNumber = actualCreatureNumber;
setGameScore(SCORE_KEY_PERSON_NUMBER, actualCreatureNumber);
}
......@@ -336,12 +343,12 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> {
}
public GameRulesDefinition getRulesDefinition() {
return rulesDefinition;
}
return rulesDefinition;
}
public void setForcedRulesDefinition(GameRulesDefinition forcedRulesDefinition) {
this.forcedRulesDefinition = forcedRulesDefinition;
}
public void setForcedRulesDefinition(GameRulesDefinition forcedRulesDefinition) {
this.forcedRulesDefinition = forcedRulesDefinition;
}
//////////////////////////////////////////// PRELOADER
......
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