/**
* Copyright (C) 2013 Gundog Studios LLC.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.godsandtowers.achievements;
import static com.godsandtowers.achievements.Achievement.BRONZE;
import static com.godsandtowers.achievements.Achievement.GOLD;
import static com.godsandtowers.achievements.Achievement.PLATINUM;
import static com.godsandtowers.achievements.Achievement.SILVER;
import static com.godsandtowers.campaigns.CampaignLevel.EASY;
import static com.godsandtowers.campaigns.CampaignLevel.EXPERT;
import static com.godsandtowers.campaigns.CampaignLevel.HARD;
import static com.godsandtowers.campaigns.CampaignLevel.MEDIUM;
import static com.godsandtowers.sprites.BaseCreature.ANGEL;
import static com.godsandtowers.sprites.BaseCreature.DRAGON;
import static com.godsandtowers.sprites.BaseCreature.DRAKE;
import static com.godsandtowers.sprites.BaseCreature.EAGLE;
import static com.godsandtowers.sprites.BaseCreature.EARTH_GOLEM;
import static com.godsandtowers.sprites.BaseCreature.ELVISH_ARCHER_HORSEMAN;
import static com.godsandtowers.sprites.BaseCreature.FALCON;
import static com.godsandtowers.sprites.BaseCreature.FALLEN_ANGEL;
import static com.godsandtowers.sprites.BaseCreature.FIERY_BEAR;
import static com.godsandtowers.sprites.BaseCreature.FIRE_GOLEM;
import static com.godsandtowers.sprites.BaseCreature.FROZEN_SOLDIER_HORSEMAN;
import static com.godsandtowers.sprites.BaseCreature.GRIZZLY_BEAR;
import static com.godsandtowers.sprites.BaseCreature.HUMAN_ARCHER_HORSEMAN;
import static com.godsandtowers.sprites.BaseCreature.ICE_GOLEM;
import static com.godsandtowers.sprites.BaseCreature.LIFE_GOLEM;
import static com.godsandtowers.sprites.BaseCreature.LIGHTNING_GOLEM;
import static com.godsandtowers.sprites.BaseCreature.MUMMY_HORSEMAN;
import static com.godsandtowers.sprites.BaseCreature.PANDA_BEAR;
import static com.godsandtowers.sprites.BaseCreature.POLAR_BEAR;
import static com.godsandtowers.sprites.BaseCreature.SERAPHIM;
import static com.godsandtowers.sprites.BaseCreature.SUCCUBUS;
import static com.godsandtowers.sprites.BaseCreature.UNDEAD_GOLEM;
import static com.godsandtowers.sprites.BaseCreature.ZEALOT_HORSEMAN;
import static com.godsandtowers.sprites.BaseCreature.ZOMBIE_HORSEMAN;
import static com.godsandtowers.sprites.BaseTower.ANGEL_STATUE;
import static com.godsandtowers.sprites.BaseTower.DIRT_EMITTER;
import static com.godsandtowers.sprites.BaseTower.EARTH_PILLAR;
import static com.godsandtowers.sprites.BaseTower.FIRE_EMITTER;
import static com.godsandtowers.sprites.BaseTower.FIRE_PILLAR;
import static com.godsandtowers.sprites.BaseTower.FLAME_CATAPULT;
import static com.godsandtowers.sprites.BaseTower.GARGOYLE_STATUE;
import static com.godsandtowers.sprites.BaseTower.GRIFFIN_STATUE;
import static com.godsandtowers.sprites.BaseTower.HOLY_WATER_EMITTER;
import static com.godsandtowers.sprites.BaseTower.LIFE_PILLAR;
import static com.godsandtowers.sprites.BaseTower.LIGHTNING_EMITTER;
import static com.godsandtowers.sprites.BaseTower.LIGHTNING_PILLAR;
import static com.godsandtowers.sprites.BaseTower.STONE_CATAPULT;
import static com.godsandtowers.sprites.BaseTower.TOXIC_GAS_EMITTER;
import static com.godsandtowers.sprites.BaseTower.UNDEAD_PILLAR;
import static com.godsandtowers.sprites.BaseTower.WATER_CATAPULT;
import static com.godsandtowers.sprites.BaseTower.WATER_EMITTER;
import static com.godsandtowers.sprites.BaseTower.WATER_PILLAR;
import static com.godsandtowers.sprites.Races.DEATH;
import static com.godsandtowers.sprites.Races.EARTH;
import static com.godsandtowers.sprites.Races.FIRE;
import static com.godsandtowers.sprites.Races.ICE;
import static com.godsandtowers.sprites.Races.LIFE;
import static com.godsandtowers.sprites.Races.WIND;
import static com.godsandtowers.sprites.Races.getName;
public class Achievements {
private static final int[] UNLOCK_WINS = { 2, 4, 6, 8, 10, 12, 16 };
private static final int BRONZE_WINS = 5;
private static final int SILVER_WINS = 25;
private static final int GOLD_WINS = 100;
private static final int PLATINUM_WINS = 1000;
public static Achievement[] getAchievements() {
return new Achievement[] {
// ICE
new UnlockAchievement(FROZEN_SOLDIER_HORSEMAN, BRONZE, UNLOCK_WINS[0]),
new UnlockAchievement(WATER_CATAPULT, BRONZE, UNLOCK_WINS[1]),
new UnlockAchievement(POLAR_BEAR, BRONZE, UNLOCK_WINS[2]),
new UnlockAchievement(ICE_GOLEM, BRONZE, UNLOCK_WINS[3]),
new UnlockAchievement(WATER_PILLAR, BRONZE, UNLOCK_WINS[4]),
new UnlockAchievement(DRAKE, BRONZE, UNLOCK_WINS[5]),
new UnlockAchievement(WATER_EMITTER, BRONZE, UNLOCK_WINS[6]),
new CompleteRaceAchievement(getName(ICE), SILVER, ICE),
new CampaignAchievement(getName(ICE), BRONZE, ICE, EASY),
new CampaignAchievement(getName(ICE), SILVER, ICE, MEDIUM),
new CampaignAchievement(getName(ICE), GOLD, ICE, HARD),
new CampaignAchievement(getName(ICE), PLATINUM, ICE, EXPERT),
new BattleAchievement(getName(ICE), BRONZE, ICE, BRONZE_WINS),
new BattleAchievement(getName(ICE), SILVER, ICE, SILVER_WINS),
new BattleAchievement(getName(ICE), GOLD, ICE, GOLD_WINS),
new BattleAchievement(getName(ICE), PLATINUM, ICE, PLATINUM_WINS),
// WIND
new UnlockAchievement(HUMAN_ARCHER_HORSEMAN, BRONZE, UNLOCK_WINS[0]),
new UnlockAchievement(GRIFFIN_STATUE, BRONZE, UNLOCK_WINS[1]),
new UnlockAchievement(PANDA_BEAR, BRONZE, UNLOCK_WINS[2]),
new UnlockAchievement(LIGHTNING_GOLEM, BRONZE, UNLOCK_WINS[3]),
new UnlockAchievement(LIGHTNING_PILLAR, BRONZE, UNLOCK_WINS[4]),
new UnlockAchievement(DRAGON, BRONZE, UNLOCK_WINS[5]),
new UnlockAchievement(LIGHTNING_EMITTER, BRONZE, UNLOCK_WINS[6]),
new CompleteRaceAchievement(getName(WIND), SILVER, WIND),
new CampaignAchievement(getName(WIND), BRONZE, WIND, EASY),
new CampaignAchievement(getName(WIND), SILVER, WIND, MEDIUM),
new CampaignAchievement(getName(WIND), GOLD, WIND, HARD),
new CampaignAchievement(getName(WIND), PLATINUM, WIND, EXPERT),
new BattleAchievement(getName(WIND), BRONZE, WIND, BRONZE_WINS),
new BattleAchievement(getName(WIND), SILVER, WIND, SILVER_WINS),
new BattleAchievement(getName(WIND), GOLD, WIND, GOLD_WINS),
new BattleAchievement(getName(WIND), PLATINUM, WIND, PLATINUM_WINS),
// EARTH
new UnlockAchievement(ELVISH_ARCHER_HORSEMAN, BRONZE, UNLOCK_WINS[0]),
new UnlockAchievement(STONE_CATAPULT, BRONZE, UNLOCK_WINS[1]),
new UnlockAchievement(GRIZZLY_BEAR, BRONZE, UNLOCK_WINS[2]),
new UnlockAchievement(EARTH_GOLEM, BRONZE, UNLOCK_WINS[3]),
new UnlockAchievement(EARTH_PILLAR, BRONZE, UNLOCK_WINS[4]),
new UnlockAchievement(EAGLE, BRONZE, UNLOCK_WINS[5]),
new UnlockAchievement(DIRT_EMITTER, BRONZE, UNLOCK_WINS[6]),
new CompleteRaceAchievement(getName(EARTH), SILVER, EARTH),
new CampaignAchievement(getName(EARTH), BRONZE, EARTH, EASY),
new CampaignAchievement(getName(EARTH), SILVER, EARTH, MEDIUM),
new CampaignAchievement(getName(EARTH), GOLD, EARTH, HARD),
new CampaignAchievement(getName(EARTH), PLATINUM, EARTH, EXPERT),
new BattleAchievement(getName(EARTH), BRONZE, EARTH, BRONZE_WINS),
new BattleAchievement(getName(EARTH), SILVER, EARTH, SILVER_WINS),
new BattleAchievement(getName(EARTH), GOLD, EARTH, GOLD_WINS),
new BattleAchievement(getName(EARTH), PLATINUM, EARTH, PLATINUM_WINS),
// FIRE
new UnlockAchievement(MUMMY_HORSEMAN, BRONZE, UNLOCK_WINS[0]),
new UnlockAchievement(FLAME_CATAPULT, BRONZE, UNLOCK_WINS[1]),
new UnlockAchievement(FIERY_BEAR, BRONZE, UNLOCK_WINS[2]),
new UnlockAchievement(FIRE_GOLEM, BRONZE, UNLOCK_WINS[3]),
new UnlockAchievement(FIRE_PILLAR, BRONZE, UNLOCK_WINS[4]),
new UnlockAchievement(FALCON, BRONZE, UNLOCK_WINS[5]),
new UnlockAchievement(FIRE_EMITTER, BRONZE, UNLOCK_WINS[6]),
new CompleteRaceAchievement(getName(FIRE), SILVER, FIRE),
new CampaignAchievement(getName(FIRE), BRONZE, FIRE, EASY),
new CampaignAchievement(getName(FIRE), SILVER, FIRE, MEDIUM),
new CampaignAchievement(getName(FIRE), GOLD, FIRE, HARD),
new CampaignAchievement(getName(FIRE), PLATINUM, FIRE, EXPERT),
new BattleAchievement(getName(FIRE), BRONZE, FIRE, BRONZE_WINS),
new BattleAchievement(getName(FIRE), SILVER, FIRE, SILVER_WINS),
new BattleAchievement(getName(FIRE), GOLD, FIRE, GOLD_WINS),
new BattleAchievement(getName(FIRE), PLATINUM, FIRE, PLATINUM_WINS),
// LIFE
new UnlockAchievement(ZEALOT_HORSEMAN, BRONZE, UNLOCK_WINS[0]),
new UnlockAchievement(ANGEL_STATUE, BRONZE, UNLOCK_WINS[1]),
new UnlockAchievement(SERAPHIM, BRONZE, UNLOCK_WINS[2]),
new UnlockAchievement(LIFE_GOLEM, BRONZE, UNLOCK_WINS[3]),
new UnlockAchievement(LIFE_PILLAR, BRONZE, UNLOCK_WINS[4]),
new UnlockAchievement(ANGEL, BRONZE, UNLOCK_WINS[5]),
new UnlockAchievement(HOLY_WATER_EMITTER, BRONZE, UNLOCK_WINS[6]),
new CompleteRaceAchievement(getName(LIFE), SILVER, LIFE),
new CampaignAchievement(getName(LIFE), BRONZE, LIFE, EASY),
new CampaignAchievement(getName(LIFE), SILVER, LIFE, MEDIUM),
new CampaignAchievement(getName(LIFE), GOLD, LIFE, HARD),
new CampaignAchievement(getName(LIFE), PLATINUM, LIFE, EXPERT),
new BattleAchievement(getName(LIFE), BRONZE, LIFE, BRONZE_WINS),
new BattleAchievement(getName(LIFE), SILVER, LIFE, SILVER_WINS),
new BattleAchievement(getName(LIFE), GOLD, LIFE, GOLD_WINS),
new BattleAchievement(getName(LIFE), PLATINUM, LIFE, PLATINUM_WINS),
// DEATH
new UnlockAchievement(ZOMBIE_HORSEMAN, BRONZE, UNLOCK_WINS[0]),
new UnlockAchievement(GARGOYLE_STATUE, BRONZE, UNLOCK_WINS[1]),
new UnlockAchievement(SUCCUBUS, BRONZE, UNLOCK_WINS[2]),
new UnlockAchievement(UNDEAD_GOLEM, BRONZE, UNLOCK_WINS[3]),
new UnlockAchievement(UNDEAD_PILLAR, BRONZE, UNLOCK_WINS[4]),
new UnlockAchievement(FALLEN_ANGEL, BRONZE, UNLOCK_WINS[5]),
new UnlockAchievement(TOXIC_GAS_EMITTER, BRONZE, UNLOCK_WINS[6]),
new CompleteRaceAchievement(getName(DEATH), SILVER, DEATH),
new CampaignAchievement(getName(DEATH), BRONZE, DEATH, EASY),
new CampaignAchievement(getName(DEATH), SILVER, DEATH, MEDIUM),
new CampaignAchievement(getName(DEATH), GOLD, DEATH, HARD),
new CampaignAchievement(getName(DEATH), PLATINUM, DEATH, EXPERT),
new BattleAchievement(getName(DEATH), BRONZE, DEATH, BRONZE_WINS),
new BattleAchievement(getName(DEATH), SILVER, DEATH, SILVER_WINS),
new BattleAchievement(getName(DEATH), GOLD, DEATH, GOLD_WINS),
new BattleAchievement(getName(DEATH), PLATINUM, DEATH, PLATINUM_WINS),
};
};
}