Use simple array for ArmorSetData.

Contributed by Sahar.
This commit is contained in:
MobiusDevelopment
2020-07-04 00:00:41 +00:00
parent e11a5bb916
commit e4b5be8916
19 changed files with 308 additions and 129 deletions

View File

@@ -17,8 +17,10 @@
package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.Map.Entry;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
@@ -34,7 +36,8 @@ import org.l2jmobius.gameserver.model.holders.SkillHolder;
*/
public class ArmorSetData implements IXmlReader
{
private final Map<Integer, ArmorSet> _armorSets = new ConcurrentHashMap<>();
private ArmorSet[] _armorSets;
private final Map<Integer, ArmorSet> _armorSetMap = new HashMap<>();
/**
* Instantiates a new armor sets data.
@@ -47,9 +50,16 @@ public class ArmorSetData implements IXmlReader
@Override
public void load()
{
_armorSets.clear();
parseDatapackDirectory("data/stats/armorsets", false);
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _armorSets.size() + " armor sets.");
_armorSets = new ArmorSet[Collections.max(_armorSetMap.keySet()) + 1];
for (Entry<Integer, ArmorSet> armorSet : _armorSetMap.entrySet())
{
_armorSets[armorSet.getKey()] = armorSet.getValue();
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _armorSetMap.size() + " armor sets.");
_armorSetMap.clear();
}
@Override
@@ -152,7 +162,7 @@ public class ArmorSetData implements IXmlReader
}
}
}
_armorSets.put(set.getChestId(), set);
_armorSetMap.put(set.getChestId(), set);
}
}
}
@@ -166,7 +176,7 @@ public class ArmorSetData implements IXmlReader
*/
public boolean isArmorSet(int chestId)
{
return _armorSets.containsKey(chestId);
return _armorSets[chestId] != null;
}
/**
@@ -176,7 +186,7 @@ public class ArmorSetData implements IXmlReader
*/
public ArmorSet getSet(int chestId)
{
return _armorSets.get(chestId);
return _armorSets[chestId];
}
/**