Rename Ability to BaseAbility, Create interface Ability

This commit is contained in:
Jack Lin 2015-07-14 15:36:25 +12:00
parent a3e7ece301
commit 425bc5a106
2 changed files with 61 additions and 54 deletions

View file

@ -1,68 +1,17 @@
package com.projectkorra.ProjectKorra.Ability;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import com.projectkorra.ProjectKorra.configuration.ConfigLoadable;
/**
* Represents an {@link ConfigLoadable} Ability.
*/
public abstract class Ability implements ConfigLoadable {
private static ConcurrentHashMap<StockAbilities, ConcurrentHashMap<UUID, Ability>> instances = new ConcurrentHashMap<>();
//protected static AbilityMap<Ability> instances = new AbilityMap<>();
protected void putInstance(StockAbilities sb, UUID uuid, Ability ability) {
if (instances.containsKey(sb)) {
instances.get(sb).put(uuid, ability);
} else {
ConcurrentHashMap<UUID, Ability> map = new ConcurrentHashMap<>();
map.put(uuid, ability);
instances.put(sb, map);
}
}
protected void removeInstance(StockAbilities sb, UUID uuid) {
if (instances.containsKey(sb)) {
if (instances.get(sb) != null) {
instances.get(sb).remove(uuid);
}
}
}
public static ConcurrentHashMap<UUID, Ability> getInstance(StockAbilities abilty) {
if (instances.containsKey(abilty)) {
return instances.get(abilty);
}
return new ConcurrentHashMap<UUID, Ability>();
}
public interface Ability extends ConfigLoadable {
/**
* A method to tell an Ability to start.
*/
public abstract void progress();
public void progress();
/**
* A method to remove an instance of an Ability.
*/
public abstract void remove();
/**
* Convenience method that calls {@link #progress()} for all instances.
*/
public static void progressAll(StockAbilities ability) {
for (UUID uuid : getInstance(ability).keySet())
instances.get(ability).get(uuid).progress();
}
/**
* Convenience method that calls {@link #remove()} for all instances.
*/
public static void removeAll(StockAbilities ability) {
for (UUID uuid : getInstance(ability).keySet()) {
instances.get(ability).get(uuid).remove();
}
}
public void remove();
}

View file

@ -0,0 +1,58 @@
package com.projectkorra.ProjectKorra.Ability;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import com.projectkorra.ProjectKorra.configuration.ConfigLoadable;
/**
* Represents an {@link ConfigLoadable} Ability.
*/
public abstract class BaseAbility implements Ability {
private static ConcurrentHashMap<StockAbilities, ConcurrentHashMap<UUID, BaseAbility>> instances = new ConcurrentHashMap<>();
//protected static AbilityMap<Ability> instances = new AbilityMap<>();
protected void putInstance(StockAbilities sb, UUID uuid, BaseAbility ability) {
if (instances.containsKey(sb)) {
instances.get(sb).put(uuid, ability);
} else {
ConcurrentHashMap<UUID, BaseAbility> map = new ConcurrentHashMap<>();
map.put(uuid, ability);
instances.put(sb, map);
}
}
protected void removeInstance(StockAbilities sb, UUID uuid) {
if (instances.containsKey(sb)) {
if (instances.get(sb) != null) {
instances.get(sb).remove(uuid);
}
}
}
public static ConcurrentHashMap<UUID, BaseAbility> getInstance(StockAbilities abilty) {
if (instances.containsKey(abilty)) {
return instances.get(abilty);
}
return new ConcurrentHashMap<UUID, BaseAbility>();
}
/**
* Convenience method that calls {@link #progress()} for all instances.
*/
public static void progressAll(StockAbilities ability) {
for (UUID uuid : getInstance(ability).keySet())
instances.get(ability).get(uuid).progress();
}
/**
* Convenience method that calls {@link #remove()} for all instances.
*/
public static void removeAll(StockAbilities ability) {
for (UUID uuid : getInstance(ability).keySet()) {
instances.get(ability).get(uuid).remove();
}
}
}