From 2c9d149e467e252d4043d3473472cd7e94f46583 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Sat, 11 Feb 2012 19:19:03 +0000 Subject: [PATCH] Changing prize structure for winning league games. --- .../gempukku/lotro/league/LeaguePrizes.java | 127 ++++++++++++++++++ .../gempukku/lotro/league/LeagueService.java | 80 +++-------- 2 files changed, 145 insertions(+), 62 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeaguePrizes.java diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeaguePrizes.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeaguePrizes.java new file mode 100644 index 000000000..d1a9d26a1 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeaguePrizes.java @@ -0,0 +1,127 @@ +package com.gempukku.lotro.league; + +import com.gempukku.lotro.cards.packs.RarityReader; +import com.gempukku.lotro.cards.packs.SetRarity; +import com.gempukku.lotro.db.vo.League; +import com.gempukku.lotro.db.vo.LeagueSerie; +import com.gempukku.lotro.game.CardCollection; +import com.gempukku.lotro.game.DefaultCardCollection; + +import java.util.*; + +public class LeaguePrizes { + private Map> _blockPromos = new HashMap>(); + private Map> _blockCommons = new HashMap>(); + private Map> _blockUncommons = new HashMap>(); + + public LeaguePrizes() { + List fotrPromos = new ArrayList(); + fotrPromos.add("0_1"); + fotrPromos.add("0_2"); + fotrPromos.add("0_3"); + fotrPromos.add("0_4"); + fotrPromos.add("0_5"); + fotrPromos.add("0_6"); + fotrPromos.add("0_7"); + fotrPromos.add("0_8"); + fotrPromos.add("0_9"); + fotrPromos.add("0_10"); + fotrPromos.add("0_11"); + fotrPromos.add("0_12"); + fotrPromos.add("0_13"); + fotrPromos.add("0_14"); + fotrPromos.add("0_15"); + fotrPromos.add("0_34"); + fotrPromos.add("0_36"); + fotrPromos.add("0_37"); + fotrPromos.add("0_41"); + fotrPromos.add("0_42"); + fotrPromos.add("0_43"); + _blockPromos.put("fotr_block", fotrPromos); + + List tttPromos = new ArrayList(); + tttPromos.add("0_16"); + tttPromos.add("0_17"); + tttPromos.add("0_18"); + tttPromos.add("0_19"); + tttPromos.add("0_21"); + tttPromos.add("0_22"); + tttPromos.add("0_30"); + tttPromos.add("0_32"); + tttPromos.add("0_33"); + tttPromos.add("0_35"); + tttPromos.add("0_38"); + tttPromos.add("0_39"); + tttPromos.add("0_40"); + tttPromos.add("0_44"); + tttPromos.add("0_45"); + tttPromos.add("0_46"); + tttPromos.add("0_47"); + _blockPromos.put("ttt_block", tttPromos); + + RarityReader rarityReader = new RarityReader(); + SetRarity fotrRarity = rarityReader.getSetRarity("1"); + SetRarity momRarity = rarityReader.getSetRarity("2"); + SetRarity rotelRarity = rarityReader.getSetRarity("3"); + + SetRarity tttRarity = rarityReader.getSetRarity("4"); + SetRarity bohdRarity = rarityReader.getSetRarity("5"); + SetRarity eofRarity = rarityReader.getSetRarity("6"); + + List fotrCommons = new ArrayList(); + fotrCommons.addAll(fotrRarity.getCardsOfRarity("C")); + fotrCommons.addAll(momRarity.getCardsOfRarity("C")); + fotrCommons.addAll(rotelRarity.getCardsOfRarity("C")); + _blockCommons.put("fotr_block", fotrCommons); + + List fotrUncommons = new ArrayList(); + fotrUncommons.addAll(fotrRarity.getCardsOfRarity("U")); + fotrUncommons.addAll(momRarity.getCardsOfRarity("U")); + fotrUncommons.addAll(rotelRarity.getCardsOfRarity("U")); + _blockUncommons.put("fotr_block", fotrUncommons); + + List tttCommons = new ArrayList(); + tttCommons.addAll(tttRarity.getCardsOfRarity("C")); + tttCommons.addAll(bohdRarity.getCardsOfRarity("C")); + tttCommons.addAll(eofRarity.getCardsOfRarity("C")); + _blockCommons.put("ttt_block", tttCommons); + + List tttUncommons = new ArrayList(); + tttUncommons.addAll(tttRarity.getCardsOfRarity("U")); + tttUncommons.addAll(bohdRarity.getCardsOfRarity("U")); + tttUncommons.addAll(eofRarity.getCardsOfRarity("U")); + _blockUncommons.put("ttt_block", tttUncommons); + } + + public CardCollection getPrizeForLeagueMatchWinner(int winCountThisSerie, int totalGamesPlayedThisSerie, League league, LeagueSerie leagueSerie) { + DefaultCardCollection winnerPrize = new DefaultCardCollection(); + if (winCountThisSerie == 1 || winCountThisSerie == 3 || winCountThisSerie == 5 || winCountThisSerie == 8 || winCountThisSerie == 10) + winnerPrize.addItem("(S)Booster Choice", 1); + else { + List blockCommons = _blockCommons.get(leagueSerie.getFormat()); + List blockUncommons = _blockUncommons.get(leagueSerie.getFormat()); + List blockPromos = _blockPromos.get(leagueSerie.getFormat()); + if (winCountThisSerie == 2) + winnerPrize.addItem(getRandom(blockCommons) + "*", 1); + else if (winCountThisSerie == 4) + winnerPrize.addItem(getRandom(blockPromos), 1); + else if (winCountThisSerie == 6) + winnerPrize.addItem(getRandom(blockPromos) + "*", 1); + else if (winCountThisSerie == 7) + winnerPrize.addItem(getRandom(blockUncommons) + "*", 1); + else if (winCountThisSerie == 9) { + winnerPrize.addItem(getRandom(blockPromos), 1); + winnerPrize.addItem(getRandom(blockCommons) + "*", 1); + } + } + return winnerPrize; + } + + public CardCollection getPrizeForLeagueMatchLoser(int winCountThisSerie, int totalGamesPlayedThisSerie, League league, LeagueSerie leagueSerie) { + return null; + } + + private String getRandom(List list) { + return list.get(new Random().nextInt(list.size())); + } +} diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueService.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueService.java index 24a05acdb..c4f244960 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueService.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueService.java @@ -30,65 +30,22 @@ public class LeagueService { private LeaguePointsDAO _leaguePointsDao; private LeagueMatchDAO _leagueMatchDao; private CollectionsManager _collectionsManager; + private LeaguePrizes _leaguePrizes; private Map> _leagueStandings = new ConcurrentHashMap>(); private Map> _leagueSerieStandings = new ConcurrentHashMap>(); - private Map> _winnerPromos = new HashMap>(); - private int _activeLeaguesLoadedDate; private Set _activeLeagues; - public LeagueService(LeagueDAO leagueDao, LeagueSerieDAO leagueSeasonDao, LeaguePointsDAO leaguePointsDao, LeagueMatchDAO leagueMatchDao, CollectionsManager collectionsManager) { + public LeagueService(LeagueDAO leagueDao, LeagueSerieDAO leagueSeasonDao, LeaguePointsDAO leaguePointsDao, LeagueMatchDAO leagueMatchDao, + CollectionsManager collectionsManager) { _leagueDao = leagueDao; _leagueSeasonDao = leagueSeasonDao; _leaguePointsDao = leaguePointsDao; _leagueMatchDao = leagueMatchDao; _collectionsManager = collectionsManager; - - List fotrPromos = new ArrayList(); - fotrPromos.add("0_1"); - fotrPromos.add("0_2"); - fotrPromos.add("0_3"); - fotrPromos.add("0_4"); - fotrPromos.add("0_5"); - fotrPromos.add("0_6"); - fotrPromos.add("0_7"); - fotrPromos.add("0_8"); - fotrPromos.add("0_9"); - fotrPromos.add("0_10"); - fotrPromos.add("0_11"); - fotrPromos.add("0_12"); - fotrPromos.add("0_13"); - fotrPromos.add("0_14"); - fotrPromos.add("0_15"); - fotrPromos.add("0_34"); - fotrPromos.add("0_36"); - fotrPromos.add("0_37"); - fotrPromos.add("0_41"); - fotrPromos.add("0_42"); - fotrPromos.add("0_43"); - _winnerPromos.put("fotr_block", fotrPromos); - - List tttPromos = new ArrayList(); - tttPromos.add("0_16"); - tttPromos.add("0_17"); - tttPromos.add("0_18"); - tttPromos.add("0_19"); - tttPromos.add("0_21"); - tttPromos.add("0_22"); - tttPromos.add("0_30"); - tttPromos.add("0_32"); - tttPromos.add("0_33"); - tttPromos.add("0_35"); - tttPromos.add("0_38"); - tttPromos.add("0_39"); - tttPromos.add("0_40"); - tttPromos.add("0_44"); - tttPromos.add("0_45"); - tttPromos.add("0_46"); - tttPromos.add("0_47"); - _winnerPromos.put("ttt_block", tttPromos); + _leaguePrizes = new LeaguePrizes(); } public void clearCache() { @@ -182,26 +139,25 @@ public class LeagueService { _leagueStandings.remove(league); _leagueSerieStandings.remove(serie); + awardPrizesToPlayer(league, serie, winner, true); + awardPrizesToPlayer(league, serie, loser, false); + } + + private void awardPrizesToPlayer(League league, LeagueSerie serie, String player, boolean winner) { int count = 0; - Collection playerMatchesPlayedOn = _leagueMatchDao.getPlayerMatchesPlayedOn(league, serie, winner); + Collection playerMatchesPlayedOn = _leagueMatchDao.getPlayerMatchesPlayedOn(league, serie, player); for (LeagueMatch leagueMatch : playerMatchesPlayedOn) { - if (leagueMatch.getWinner().equals(winner)) + if (leagueMatch.getWinner().equals(player)) count++; } - DefaultCardCollection winnerPrize = new DefaultCardCollection(); - winnerPrize.addItem("(S)Booster Choice", 1); - if (count == 2 || count == 4) { - winnerPrize.addItem(getRandomPromoForBlock(serie.getFormat()), 1); - } else if (count == 6 || count == 8 || count == 10) { - winnerPrize.addItem(getRandomPromoForBlock(serie.getFormat()) + "*", 1); - } - _collectionsManager.addItemsToPlayerCollection(this, winner, "permanent", winnerPrize.getAll()); - } - - private String getRandomPromoForBlock(String format) { - final List promos = _winnerPromos.get(format); - return promos.get(new Random().nextInt(promos.size())); + CardCollection prize; + if (winner) + prize = _leaguePrizes.getPrizeForLeagueMatchWinner(count, playerMatchesPlayedOn.size(), league, serie); + else + prize = _leaguePrizes.getPrizeForLeagueMatchLoser(count, playerMatchesPlayedOn.size(), league, serie); + if (prize != null) + _collectionsManager.addItemsToPlayerCollection(this, player, "permanent", prize.getAll()); } public List getLeagueStandings(League league) {