Skip to content
Snippets Groups Projects
Commit 455906e3 authored by Frantisek Simon's avatar Frantisek Simon
Browse files

#10 Added trophy check for three star result

parent 3bfb3125
Branches
Tags
No related merge requests found
......@@ -34,38 +34,38 @@ public enum GameTrophyDefinition implements ITrophyDefinition {
ROBBERY_PLAY1(GameDefinition.ROBBERY, GameTrophyTypeDefinition.PLAY_LIMIT_1, "robbery_1_finished", "robbery_1_finished_description", 1, new GameTrophy.NumberOfTimesFinished()), //0
ROBBERY_PLAY2(GameDefinition.ROBBERY, GameTrophyTypeDefinition.PLAY_LIMIT_2, "robbery_5_finished", "robbery_5_finished_description", 5, new GameTrophy.NumberOfTimesFinished()), //1
ROBBERY_PLAY3(GameDefinition.ROBBERY, GameTrophyTypeDefinition.PLAY_LIMIT_3, "robbery_10_finished", "robbery_10_finished_description", 10, new GameTrophy.NumberOfTimesFinished()), //2
ROBBERY_DIFF1(GameDefinition.ROBBERY, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_1, "robbery_1_limit", "robbery_1_limit_description", GameDifficulty.MEDIUM.ordinal(), new GameTrophy.DummyResolver()), //3
ROBBERY_DIFF2(GameDefinition.ROBBERY, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_2, "robbery_2_limit", "robbery_2_limit_description", GameDifficulty.HARD.ordinal(), new GameTrophy.DummyResolver()),//4
ROBBERY_DIFF1(GameDefinition.ROBBERY, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_1, "robbery_1_limit", "robbery_1_limit_description", GameDifficulty.MEDIUM.getDifficultyNumber(), new GameTrophy.ThreeStarsReceived()), //3
ROBBERY_DIFF2(GameDefinition.ROBBERY, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_2, "robbery_2_limit", "robbery_2_limit_description", GameDifficulty.HARD.getDifficultyNumber(), new GameTrophy.ThreeStarsReceived()),//4
PURSUIT_PLAY1(GameDefinition.PURSUIT, GameTrophyTypeDefinition.PLAY_LIMIT_1, "pursuit_1_finished", "pursuit_1_finished_description", 1, new GameTrophy.NumberOfTimesFinished()), //5
PURSUIT_PLAY2(GameDefinition.PURSUIT, GameTrophyTypeDefinition.PLAY_LIMIT_2, "pursuit_5_finished", "pursuit_5_finished_description", 5, new GameTrophy.NumberOfTimesFinished()), //6
PURSUIT_PLAY3(GameDefinition.PURSUIT, GameTrophyTypeDefinition.PLAY_LIMIT_3, "pursuit_10_finished", "pursuit_10_finished_description", 10, new GameTrophy.NumberOfTimesFinished()), //7
PURSUIT_DIFF1(GameDefinition.PURSUIT, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_1, "pursuit_1_limit", "pursuit_1_limit_description", GameDifficulty.MEDIUM.ordinal(), new GameTrophy.DummyResolver()), //8
PURSUIT_DIFF2(GameDefinition.PURSUIT, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_2, "pursuit_2_limit", "pursuit_2_limit_description", GameDifficulty.HARD.ordinal(), new GameTrophy.DummyResolver()),//9
PURSUIT_DIFF1(GameDefinition.PURSUIT, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_1, "pursuit_1_limit", "pursuit_1_limit_description", GameDifficulty.MEDIUM.getDifficultyNumber(), new GameTrophy.ThreeStarsReceived()), //8
PURSUIT_DIFF2(GameDefinition.PURSUIT, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_2, "pursuit_2_limit", "pursuit_2_limit_description", GameDifficulty.HARD.getDifficultyNumber(), new GameTrophy.ThreeStarsReceived()),//9
KIDNAPPING_PLAY1(GameDefinition.KIDNAPPING, GameTrophyTypeDefinition.PLAY_LIMIT_1, "kidnapping_1_finished", "kidnapping_1_finished_description", 1, new GameTrophy.NumberOfTimesFinished()), //10
KIDNAPPING_PLAY2(GameDefinition.KIDNAPPING, GameTrophyTypeDefinition.PLAY_LIMIT_2, "kidnapping_5_finished", "kidnapping_5_finished_description", 5, new GameTrophy.NumberOfTimesFinished()), //11
KIDNAPPING_PLAY3(GameDefinition.KIDNAPPING, GameTrophyTypeDefinition.PLAY_LIMIT_3, "kidnapping_10_finished", "kidnapping_10_finished_description", 10, new GameTrophy.NumberOfTimesFinished()), //12
KIDNAPPING_DIFF1(GameDefinition.KIDNAPPING, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_1, "kidnapping_1_limit", "kidnapping_1_limit_description", GameDifficulty.MEDIUM.ordinal(), new GameTrophy.DummyResolver()), //13
KIDNAPPING_DIFF2(GameDefinition.KIDNAPPING, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_2, "kidnapping_2_limit", "kidnapping_2_limit_description", GameDifficulty.HARD.ordinal(), new GameTrophy.DummyResolver()),//14
KIDNAPPING_DIFF1(GameDefinition.KIDNAPPING, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_1, "kidnapping_1_limit", "kidnapping_1_limit_description", GameDifficulty.MEDIUM.getDifficultyNumber(), new GameTrophy.ThreeStarsReceived()), //13
KIDNAPPING_DIFF2(GameDefinition.KIDNAPPING, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_2, "kidnapping_2_limit", "kidnapping_2_limit_description", GameDifficulty.HARD.getDifficultyNumber(), new GameTrophy.ThreeStarsReceived()),//14
NIGHT_WATCH_PLAY1(GameDefinition.NIGHT_WATCH, GameTrophyTypeDefinition.PLAY_LIMIT_1, "night_watch_1_finished", "night_watch_1_finished_description", 1, new GameTrophy.NumberOfTimesFinished()), //15
NIGHT_WATCH_PLAY2(GameDefinition.NIGHT_WATCH, GameTrophyTypeDefinition.PLAY_LIMIT_2, "night_watch_5_finished", "night_watch_5_finished_description", 5, new GameTrophy.NumberOfTimesFinished()), //16
NIGHT_WATCH_PLAY3(GameDefinition.NIGHT_WATCH, GameTrophyTypeDefinition.PLAY_LIMIT_3, "night_watch_10_finished", "night_watch_10_finished_description",10, new GameTrophy.NumberOfTimesFinished()), //17
NIGHT_WATCH_DIFF1(GameDefinition.NIGHT_WATCH, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_1, "night_watch_1_limit", "night_watch_1_limit_description", GameDifficulty.MEDIUM.ordinal(), new GameTrophy.DummyResolver()), //18
NIGHT_WATCH_DIFF2(GameDefinition.NIGHT_WATCH, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_2, "night_watch_2_limit", "night_watch_2_limit_description",GameDifficulty.HARD.ordinal(), new GameTrophy.DummyResolver()),//19
NIGHT_WATCH_DIFF1(GameDefinition.NIGHT_WATCH, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_1, "night_watch_1_limit", "night_watch_1_limit_description", GameDifficulty.MEDIUM.getDifficultyNumber(), new GameTrophy.ThreeStarsReceived()), //18
NIGHT_WATCH_DIFF2(GameDefinition.NIGHT_WATCH, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_2, "night_watch_2_limit", "night_watch_2_limit_description",GameDifficulty.HARD.getDifficultyNumber(), new GameTrophy.ThreeStarsReceived()),//19
SHOOTING_RANGE_PLAY1(GameDefinition.SHOOTING_RANGE, GameTrophyTypeDefinition.PLAY_LIMIT_1, "shooting_range_1_finished", "shooting_range_1_finished_description", 1, new GameTrophy.NumberOfTimesFinished()), //20
SHOOTING_RANGE_PLAY2(GameDefinition.SHOOTING_RANGE, GameTrophyTypeDefinition.PLAY_LIMIT_2, "shooting_range_5_finished","shooting_range_5_finished_description", 5, new GameTrophy.NumberOfTimesFinished()), //21
SHOOTING_RANGE_PLAY3(GameDefinition.SHOOTING_RANGE, GameTrophyTypeDefinition.PLAY_LIMIT_3, "shooting_range_10_finished", "shooting_range_10_finished_description", 10, new GameTrophy.NumberOfTimesFinished()), //22
SHOOTING_RANGE_DIFF1(GameDefinition.SHOOTING_RANGE, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_1, "shooting_range_1_limit", "shooting_range_1_limit_description", GameDifficulty.MEDIUM.ordinal(), new GameTrophy.DummyResolver()), //23
SHOOTING_RANGE_DIFF2(GameDefinition.SHOOTING_RANGE, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_2, "shooting_range_2_limit", "shooting_range_2_limit_description", GameDifficulty.HARD.ordinal(), new GameTrophy.DummyResolver()),//24
SHOOTING_RANGE_DIFF1(GameDefinition.SHOOTING_RANGE, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_1, "shooting_range_1_limit", "shooting_range_1_limit_description", GameDifficulty.MEDIUM.getDifficultyNumber(), new GameTrophy.ThreeStarsReceived()), //23
SHOOTING_RANGE_DIFF2(GameDefinition.SHOOTING_RANGE, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_2, "shooting_range_2_limit", "shooting_range_2_limit_description", GameDifficulty.HARD.getDifficultyNumber(), new GameTrophy.ThreeStarsReceived()),//24
IN_THE_DARKNESS_PLAY1(GameDefinition.IN_THE_DARKNESS, GameTrophyTypeDefinition.PLAY_LIMIT_1, "in_the_darkness_1_finished", "in_the_darkness_1_finished_description", 1, new GameTrophy.NumberOfTimesFinished()), //25
IN_THE_DARKNESS_PLAY2(GameDefinition.IN_THE_DARKNESS, GameTrophyTypeDefinition.PLAY_LIMIT_2, "in_the_darkness_5_finished","in_the_darkness_5_finished_description", 5, new GameTrophy.NumberOfTimesFinished()), //26
IN_THE_DARKNESS_PLAY3(GameDefinition.IN_THE_DARKNESS, GameTrophyTypeDefinition.PLAY_LIMIT_3, "in_the_darkness_10_finished", "in_the_darkness_10_finished_description", 10, new GameTrophy.NumberOfTimesFinished()), //27
IN_THE_DARKNESS_DIFF1(GameDefinition.IN_THE_DARKNESS, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_1, "in_the_darkness_1_limit", "in_the_darkness_1_limit_description", GameDifficulty.MEDIUM.ordinal(), new GameTrophy.DummyResolver()), //28
IN_THE_DARKNESS_DIFF2(GameDefinition.IN_THE_DARKNESS, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_2, "in_the_darkness_2_limit", "in_the_darkness_2_limit_description", GameDifficulty.HARD.ordinal(), new GameTrophy.DummyResolver());//29
IN_THE_DARKNESS_DIFF1(GameDefinition.IN_THE_DARKNESS, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_1, "in_the_darkness_1_limit", "in_the_darkness_1_limit_description", GameDifficulty.MEDIUM.getDifficultyNumber(), new GameTrophy.ThreeStarsReceived()), //28
IN_THE_DARKNESS_DIFF2(GameDefinition.IN_THE_DARKNESS, GameTrophyTypeDefinition.DIFFICULTY_LIMIT_2, "in_the_darkness_2_limit", "in_the_darkness_2_limit_description", GameDifficulty.HARD.getDifficultyNumber(), new GameTrophy.ThreeStarsReceived());//29
private GameDefinition gameDefinition;
......
......@@ -3,8 +3,13 @@ package cz.nic.tablexia.model.game;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import cz.nic.tablexia.TablexiaStorage;
import cz.nic.tablexia.game.GameDefinition;
import cz.nic.tablexia.game.common.TablexiaRandom;
import cz.nic.tablexia.game.difficulty.GameDifficulty;
import cz.nic.tablexia.game.trophy.GameTrophyDefinition;
import cz.nic.tablexia.model.User;
import cz.nic.tablexia.util.Log;
......@@ -34,7 +39,7 @@ public class GameTrophy {
statement.setInt(2, trophyDef.getGameDefinition().getGameNumber());
try {
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
if (resultSet.next()) {
playedCount = resultSet.getInt(1);
}
resultSet.close();
......@@ -49,10 +54,54 @@ public class GameTrophy {
}
}
public static class DummyResolver implements GameTrophyResolver {
public static class ThreeStarsReceived implements GameTrophyResolver {
public static final String GAME_SELECT_FOR_GAME_AND_DIFFICULTY = "SELECT id, user_id, difficulty_number, game_number, random_seed, start_time, end_time FROM game WHERE game_number = ? AND difficulty_number = ? AND user_id = ? AND end_time IS NOT NULL";
private static List<Game> getGamesForGameAndDifficulty(User user, GameTrophyDefinition trophyDef) {
List<Game> games = new ArrayList<Game>();
try {
PreparedStatement statement = TablexiaStorage.getInstance().prepareStatement(GAME_SELECT_FOR_GAME_AND_DIFFICULTY);
statement.setInt(1, trophyDef.getGameDefinition().getGameNumber());
statement.setInt(2, trophyDef.getLimit());
statement.setLong(3, user.getId());
try {
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
String startTimeStr = resultSet.getString(6);
String endTimeStr = resultSet.getString(7);
games.add(new Game(resultSet.getLong(1),
User.selectUser(resultSet.getLong(2)),
GameDifficulty.getGameDifficultyForDifficultyNumber(resultSet.getInt(3)),
GameDefinition.getGameDefinitionForGameNumber(resultSet.getInt(4)),
new TablexiaRandom(resultSet.getLong(5)),
startTimeStr != null ? Long.valueOf(startTimeStr) : null,
endTimeStr != null ? Long.valueOf(endTimeStr) : null));
}
resultSet.close();
} catch (SQLException e) {
Log.err(User.class, "Cannot select game with user_id: " + user.getId() + ", game_number: " + trophyDef.getGameDefinition().getGameNumber() + ", difficulty: " + trophyDef.getLimit(), e);
}
statement.close();
} catch (SQLException e) {
Log.err(User.class, "Cannot select game with user_id: " + user.getId() + ", game_number: " + trophyDef.getGameDefinition().getGameNumber() + ", difficulty: " + trophyDef.getLimit(), e);
}
return games;
}
@Override
public boolean hasGameTrophy(User user, GameTrophyDefinition trophyDef) {
List<Game> games = getGamesForGameAndDifficulty(user, trophyDef);
if (games.isEmpty()) {
return false;
}
for (Game game : games) {
if (game.getGameResult().getStarCount() == 3) {
return true;
}
}
return false;
}
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment