2013-08-27 17:14:08 +02:00
|
|
|
package mineplex.minecraft.game.classcombat.Skill;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
2014-03-28 03:17:31 +01:00
|
|
|
import java.util.Set;
|
2013-08-27 17:14:08 +02:00
|
|
|
|
2014-03-28 03:17:31 +01:00
|
|
|
import mineplex.core.common.util.NautHashMap;
|
2013-08-27 17:14:08 +02:00
|
|
|
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
|
|
|
|
import mineplex.minecraft.game.classcombat.Skill.repository.token.SkillToken;
|
|
|
|
|
|
|
|
import org.bukkit.entity.Entity;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.event.EventHandler;
|
|
|
|
import org.bukkit.event.Listener;
|
|
|
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
|
|
|
import org.bukkit.event.player.PlayerQuitEvent;
|
|
|
|
|
|
|
|
public abstract class Skill implements ISkill, Listener
|
|
|
|
{
|
|
|
|
//Properties
|
|
|
|
private String _name;
|
|
|
|
private String[] _desc;
|
|
|
|
private String[] _descFull;
|
|
|
|
|
|
|
|
private ClassType _classType;
|
|
|
|
private SkillType _skillType;
|
|
|
|
|
|
|
|
private int _salesPackageId;
|
2014-03-28 03:17:31 +01:00
|
|
|
private int _cost = 1000;
|
|
|
|
private int _maxLevel = 1;
|
2013-08-27 17:14:08 +02:00
|
|
|
|
|
|
|
private boolean _free;
|
2014-03-28 03:17:31 +01:00
|
|
|
private NautHashMap<Player, Integer> _users;
|
2013-08-27 17:14:08 +02:00
|
|
|
|
|
|
|
public SkillFactory Factory;
|
|
|
|
|
2014-03-28 03:17:31 +01:00
|
|
|
public Skill(SkillFactory skills, String name, ClassType classType, SkillType skillType, int cost, int maxLevel)
|
2013-08-27 17:14:08 +02:00
|
|
|
{
|
|
|
|
Factory = skills;
|
|
|
|
_name = name;
|
|
|
|
_desc = new String[] { "<Skill Description>" };
|
|
|
|
_classType = classType;
|
|
|
|
_skillType = skillType;
|
2014-03-28 03:17:31 +01:00
|
|
|
_users = new NautHashMap<Player, Integer>();
|
|
|
|
_maxLevel = maxLevel;
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String GetName()
|
|
|
|
{
|
|
|
|
return _name;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String GetName(int level)
|
|
|
|
{
|
|
|
|
if (level <= 1)
|
|
|
|
return GetName();
|
|
|
|
|
|
|
|
return _name + " " + level;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String GetName(String type)
|
|
|
|
{
|
|
|
|
return _name + " (" + type + ")";
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Integer GetSalesPackageId()
|
|
|
|
{
|
|
|
|
return _salesPackageId;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public ClassType GetClassType()
|
|
|
|
{
|
|
|
|
return _classType;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public SkillType GetSkillType()
|
|
|
|
{
|
|
|
|
return _skillType;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int GetCost()
|
|
|
|
{
|
|
|
|
return _cost;
|
|
|
|
}
|
|
|
|
|
2014-03-28 03:17:31 +01:00
|
|
|
@Override
|
|
|
|
public int getMaxLevel()
|
|
|
|
{
|
|
|
|
return _maxLevel;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getLevel(Entity ent)
|
2013-08-27 17:14:08 +02:00
|
|
|
{
|
|
|
|
if (!(ent instanceof Player))
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
Player player = (Player)ent;
|
|
|
|
|
2014-03-28 03:17:31 +01:00
|
|
|
if (!_users.containsKey(player))
|
2013-08-27 17:14:08 +02:00
|
|
|
return 0;
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String[] GetDesc()
|
|
|
|
{
|
|
|
|
if (_descFull != null)
|
|
|
|
return _descFull;
|
|
|
|
|
|
|
|
String recharge = GetRechargeString();
|
|
|
|
String energy = GetEnergyString();
|
|
|
|
|
|
|
|
if (recharge == null && energy == null)
|
|
|
|
_descFull = _desc;
|
|
|
|
|
|
|
|
ArrayList<String> descFull = new ArrayList<String>();
|
|
|
|
|
|
|
|
for (String line : _desc)
|
|
|
|
descFull.add(line);
|
|
|
|
|
|
|
|
if (energy != null || recharge != null)
|
|
|
|
descFull.add("");
|
|
|
|
|
|
|
|
if (energy != null)
|
|
|
|
descFull.add(energy);
|
|
|
|
|
|
|
|
if (recharge != null)
|
|
|
|
descFull.add(recharge);
|
|
|
|
|
|
|
|
_descFull = new String[descFull.size()];
|
|
|
|
for (int i=0 ; i<descFull.size() ; i++)
|
|
|
|
_descFull[i] = descFull.get(i);
|
|
|
|
|
|
|
|
return _descFull;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String GetEnergyString()
|
|
|
|
{
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String GetRechargeString()
|
|
|
|
{
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2014-03-28 03:17:31 +01:00
|
|
|
public Set<Player> GetUsers()
|
2013-08-27 17:14:08 +02:00
|
|
|
{
|
|
|
|
_users.remove(null);
|
2014-03-28 03:17:31 +01:00
|
|
|
return _users.keySet();
|
2013-08-27 17:14:08 +02:00
|
|
|
}
|
|
|
|
|
2014-03-28 03:17:31 +01:00
|
|
|
public void AddUser(Player player, int level)
|
2013-08-27 17:14:08 +02:00
|
|
|
{
|
2014-03-28 03:17:31 +01:00
|
|
|
_users.put(player, level);
|
2013-08-27 17:14:08 +02:00
|
|
|
OnPlayerAdd(player);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void OnPlayerAdd(Player player)
|
|
|
|
{
|
|
|
|
//Null Default
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void RemoveUser(Player player)
|
|
|
|
{
|
|
|
|
_users.remove(player);
|
|
|
|
Reset(player);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SetDesc(String[] desc)
|
|
|
|
{
|
|
|
|
_desc = desc;
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public final void Death(PlayerDeathEvent event)
|
|
|
|
{
|
|
|
|
Reset(event.getEntity());
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public final void Quit(PlayerQuitEvent event)
|
|
|
|
{
|
|
|
|
Reset(event.getPlayer());
|
|
|
|
_users.remove(event.getPlayer());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean IsFree()
|
|
|
|
{
|
|
|
|
return _free;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void Update(SkillToken skillToken)
|
|
|
|
{
|
|
|
|
_salesPackageId = skillToken.SalesPackage.GameSalesPackageId;
|
|
|
|
_free = skillToken.SalesPackage.Free;
|
|
|
|
_cost = skillToken.SalesPackage.Gems;
|
|
|
|
}
|
|
|
|
}
|