214 lines
5.8 KiB
Java

package com.bernard.greposimu.model;
import java.util.AbstractMap;
import java.util.Collection;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import com.bernard.greposimu.model.game.GameConfig;
import com.bernard.greposimu.model.game.units.Hero;
import com.bernard.greposimu.model.game.units.Unit;
public class DefContext {
// UNITS
Map<Unit, Integer> units;
// HEROS
Hero hero;
int heroLevel;
// BUILDINGS
int wallLevel;
boolean hasTower;
// RESEARCHES
boolean divineSelection, phalanx, ram;
// COUNSELLORS
boolean commander;
boolean priest;
boolean captain;
// EFFECTS
boolean acumen, divineSenses, myrmidionAttack, trojanDefense,
defenseBoost, defensePenalty, longtermDefenseBoost, assassinsAcumen,
rareDefenseBoost, epicDefenseBoost, missionsPower4,
divineBattleStrategyRare, divineBattleStrategyEpic, navalBattleStrategyRare,
navalBattleStrategyEpic, landBattleStrategyRare, landBattleStrategyEpic;
int olympicSensesGrepolympiaSummerLevel = 0;
int olympicTorchGrepolympiaSummerLevel = 0;
int soteriasShrineLevel = 0;
// BONUSES
boolean nightBonus;
public DefContext(Map<Unit, Integer> units, Hero hero, int heroLevel, int wallLevel, boolean hasTower,
Set<String> powers, int soteriasShrinePowerLevel, int olympicTorchGrepolympiaSummerLevel, int olympicSensesGrepolympiaSummerLevel, Set<String> researches, Set<String> counsellors, boolean nightBonus) {
this.units = units;
this.hero = hero;
this.heroLevel = heroLevel;
this.wallLevel = wallLevel;
this.hasTower = hasTower;
if(powers.contains("acumen"))this.acumen = true;
if(powers.contains("divine_senses"))this.divineSenses = true;
if(powers.contains("myrmdion_attack"))this.myrmidionAttack = true;
if(powers.contains("trojan_defense"))this.trojanDefense = true;
if(powers.contains("defense_boost"))this.defenseBoost = true;
if(powers.contains("defense_penalty"))this.defensePenalty = true;
if(powers.contains("longterm_defense_boost"))this.longtermDefenseBoost = true;
if(powers.contains("assassins_acumen"))this.assassinsAcumen = true;
if(powers.contains("rare_defense_boost"))this.rareDefenseBoost = true;
if(powers.contains("epic_defense_boost"))this.defenseBoost = true;
if(powers.contains("olympic_torch"))this.olympicTorchGrepolympiaSummerLevel = olympicTorchGrepolympiaSummerLevel;
if(powers.contains("olympic_senses"))this.olympicSensesGrepolympiaSummerLevel = olympicSensesGrepolympiaSummerLevel;
if(powers.contains("missions_power_4"))this.missionsPower4 = true;
if(powers.contains("divine_battle_strategy_rare"))this.divineBattleStrategyRare = true;
if(powers.contains("divine_battle_strategy_epic"))this.divineBattleStrategyEpic = true;
if(powers.contains("naval_battle_strategy_rare"))this.navalBattleStrategyRare = true;
if(powers.contains("naval_battle_strategy_epic"))this.navalBattleStrategyEpic = true;
if(powers.contains("land_battle_strategy_rare"))this.landBattleStrategyRare = true;
if(powers.contains("land_battle_strategy_epic"))this.landBattleStrategyEpic = true;
if(powers.contains("soterias_shrine"))this.soteriasShrineLevel = soteriasShrinePowerLevel;
if(researches.contains("divine_selection"))this.divineSelection = true;
if(researches.contains("phalanx"))this.phalanx = true;
if(researches.contains("ram"))this.ram = true;
if(counsellors.contains("commander"))this.commander = true;
if(counsellors.contains("priest"))this.priest = true;
if(counsellors.contains("captain"))this.captain = true;
this.nightBonus = nightBonus;
}
public Map<Unit, Integer> getUnits() {
return units;
}
public int unitCount(Unit u) {
return Optional.ofNullable(units.getOrDefault(u,0)).orElse(0);
}
public Hero getHero() {
return hero;
}
public int getHeroLevel() {
return heroLevel;
}
public int getWallLevel() {
return wallLevel;
}
public boolean hasTower() {
return hasTower;
}
public boolean isNightBonus() {
return nightBonus;
}
public boolean hasDivineSelection() {
return divineSelection;
}
public boolean hasPhalanx() {
return phalanx;
}
public boolean hasRam() {
return ram;
}
public boolean hasCommander() {
return commander;
}
public boolean hasPriest() {
return priest;
}
public boolean hasCaptain() {
return captain;
}
public boolean hasAcumen() {
return acumen;
}
public boolean hasDivineSenses() {
return divineSenses;
}
public boolean hasMyrmidionAttack() {
return myrmidionAttack;
}
public boolean hasTrojanDefense() {
return trojanDefense;
}
public boolean hasDefenseBoost() {
return defenseBoost;
}
public boolean hasDefensePenalty() {
return defensePenalty;
}
public boolean hasLongtermDefenseBoost() {
return longtermDefenseBoost;
}
public boolean hasAssassinsAcumen() {
return assassinsAcumen;
}
public boolean hasRareDefenseBoost() {
return rareDefenseBoost;
}
public boolean hasEpicDefenseBoost() {
return epicDefenseBoost;
}
public boolean hasMhassionsPower4() {
return missionsPower4;
}
public boolean hasDivineBattleStrategyRare() {
return divineBattleStrategyRare;
}
public boolean hasDivineBattleStrategyEpic() {
return divineBattleStrategyEpic;
}
public boolean hasNavalBattleStrategyRare() {
return navalBattleStrategyRare;
}
public boolean hasNavalBattleStrategyEpic() {
return navalBattleStrategyEpic;
}
public boolean hasLandBattleStrategyRare() {
return landBattleStrategyRare;
}
public boolean hasLandBattleStrategyEpic() {
return landBattleStrategyEpic;
}
public int getOlympicSensesGrepolympiaSummerLevel() {
return olympicSensesGrepolympiaSummerLevel;
}
public int getOlympicTorchGrepolympiaSummerLevel() {
return olympicTorchGrepolympiaSummerLevel;
}
public int getSoteriasShrineLevel() {
return soteriasShrineLevel;
}
}