add all managers
This commit is contained in:
@@ -0,0 +1,248 @@
|
||||
package org.project.managers;
|
||||
|
||||
import org.project.Colors;
|
||||
import org.project.abilities.SpecialAbility;
|
||||
import org.project.entity.Entity;
|
||||
import org.project.entity.players.Player;
|
||||
import org.project.item.armors.Armor;
|
||||
import org.project.item.weapons.Weapon;
|
||||
import org.project.weaponEffects.StatusEffect;
|
||||
|
||||
public class ManaCostManager {
|
||||
|
||||
private final int heavyAttackManaCost = 8;
|
||||
private final int defendManaCost = 9;
|
||||
private final int healManaCost = 12;
|
||||
private final int shieldBashManaCost = 15;
|
||||
|
||||
// =========================
|
||||
// Weapon
|
||||
// =========================
|
||||
|
||||
public void equipWeapon(Player player, Weapon weapon) {
|
||||
|
||||
int manaCost = getWeaponEquipCost(weapon);
|
||||
|
||||
if (player.getMp() < manaCost) {
|
||||
|
||||
System.out.println("Not enough mana to equip weapon!");
|
||||
return;
|
||||
}
|
||||
|
||||
player.useMana(manaCost);
|
||||
|
||||
player.setWeapon(weapon);
|
||||
|
||||
System.out.println(
|
||||
player.getName() +
|
||||
" equipped weapon: " +
|
||||
weapon.getName()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
// =========================
|
||||
// Armor
|
||||
// =========================
|
||||
|
||||
public void equipArmor(Player player, Armor armor) {
|
||||
|
||||
int manaCost = getArmorEquipCost(armor);
|
||||
|
||||
if (player.getMp() < manaCost) {
|
||||
|
||||
System.out.println(Colors.RED + "Not enough mana to equip armor!" + Colors.RESET);
|
||||
return;
|
||||
}
|
||||
|
||||
player.useMana(manaCost);
|
||||
|
||||
player.setArmor(armor);
|
||||
|
||||
System.out.println(
|
||||
player.getName() +
|
||||
Colors.GREEN +
|
||||
" equipped armor: " +
|
||||
Colors.RESET +
|
||||
armor.getName()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
// =========================
|
||||
// Status Effect
|
||||
// =========================
|
||||
|
||||
public void equipStatusEffect(Player player,
|
||||
StatusEffect equippedEffect) {
|
||||
|
||||
Weapon weapon = player.getWeapon();
|
||||
|
||||
if (weapon == null) {
|
||||
|
||||
System.out.println(Colors.RED + "Equip a weapon first!" + Colors.RESET);
|
||||
return;
|
||||
}
|
||||
|
||||
int manaCost = equippedEffect.getEquipManaCost();
|
||||
|
||||
if (player.getMp() < manaCost) {
|
||||
|
||||
System.out.println(Colors.RED + "Not enough mana to equip this effect!" + Colors.RESET);
|
||||
return;
|
||||
}
|
||||
|
||||
player.useMana(manaCost);
|
||||
|
||||
weapon.setEffect(equippedEffect);
|
||||
|
||||
System.out.println(
|
||||
player.getName() +
|
||||
Colors.GREEN +
|
||||
" equipped effect: " +
|
||||
Colors.RESET +
|
||||
equippedEffect.getName()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
// =========================
|
||||
// Special Ability
|
||||
// =========================
|
||||
|
||||
public boolean useSpecialAbility(Entity entity) {
|
||||
|
||||
SpecialAbility ability = entity.getSpacialAbility();
|
||||
|
||||
if (ability == null) {
|
||||
|
||||
System.out.println(Colors.RED + "No special ability equipped!" + Colors.RESET);
|
||||
return false;
|
||||
}
|
||||
|
||||
int manaCost = ability.getManaCost();
|
||||
|
||||
if (entity.getMp() < manaCost) {
|
||||
|
||||
System.out.println(Colors.RED + "Not enough mana to use special ability!" + Colors.RESET);
|
||||
return false;
|
||||
}
|
||||
|
||||
entity.useMana(manaCost);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// =========================
|
||||
// Heavy Attack
|
||||
// =========================
|
||||
|
||||
public boolean useHeavyAttack(Entity entity) {
|
||||
|
||||
if (entity.getMp() < heavyAttackManaCost) {
|
||||
|
||||
System.out.println(Colors.RED + "Not enough mana!" + Colors.RESET);
|
||||
return false;
|
||||
}
|
||||
|
||||
entity.useMana(heavyAttackManaCost);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// =========================
|
||||
// Defend
|
||||
// =========================
|
||||
|
||||
public boolean useDefend(Entity entity) {
|
||||
|
||||
if (entity.getMp() < defendManaCost) {
|
||||
|
||||
System.out.println(Colors.RED + "Not enough mana!" + Colors.RESET);
|
||||
return false;
|
||||
}
|
||||
|
||||
entity.useMana(defendManaCost);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// =========================
|
||||
// Heal
|
||||
// =========================
|
||||
|
||||
public boolean useHeal(Entity entity) {
|
||||
|
||||
if (entity.getMp() < healManaCost) {
|
||||
|
||||
System.out.println(Colors.RED + "Not enough mana!" + Colors.RESET);
|
||||
return false;
|
||||
}
|
||||
|
||||
entity.useMana(healManaCost);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// =========================
|
||||
// Shield Bash
|
||||
// =========================
|
||||
|
||||
public boolean useShieldBash(Player player) {
|
||||
|
||||
Armor armor = player.getArmor();
|
||||
|
||||
if (armor == null) {
|
||||
|
||||
System.out.println(Colors.RED + "You need armor to use Shield Bash!" + Colors.RESET);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (armor.getType() != Armor.ArmorType.HEAVY) {
|
||||
|
||||
System.out.println(Colors.RED + "Shield Bash requires HEAVY armor!" + Colors.RESET);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (player.getMp() < shieldBashManaCost) {
|
||||
|
||||
System.out.println(Colors.RED + "Not enough mana!" + Colors.RESET);
|
||||
return false;
|
||||
}
|
||||
|
||||
player.useMana(shieldBashManaCost);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// =========================
|
||||
// Mana Costs
|
||||
// =========================
|
||||
|
||||
private int getArmorEquipCost(Armor armor) {
|
||||
|
||||
return switch (armor.getType()) {
|
||||
|
||||
case LIGHT -> 3;
|
||||
|
||||
case MEDIUM -> 6;
|
||||
|
||||
case HEAVY -> 10;
|
||||
};
|
||||
}
|
||||
|
||||
private int getWeaponEquipCost(Weapon weapon) {
|
||||
|
||||
int damage = weapon.getLightAttackDamage();
|
||||
|
||||
if (damage <= 10) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
if (damage <= 20) {
|
||||
return 6;
|
||||
}
|
||||
|
||||
return 10;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user