package com.l2jserver.gameserver.model.entity;
import com.l2jserver.Config;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilderFactory;
/**
* TvTのパターンを入れるコンテナクラス
* @author MaskedRiderW
*/
public class TvTPatternContainer
{
protected static final Logger _log = Logger.getLogger(TvTPatternContainer.class.getName());
public static Map<Integer, TvTPattern> _patterns;
public static int _currentId;
public static void init(){
// TvTのパターンを読み込む
File xml = new File(Config.DATAPACK_ROOT, "/data/tvtPatterns.xml");
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
if (!xml.exists())
{
_log.severe("[TvTPatternContainer] Missing tvtPattern.xml.");
return;
}
factory.setValidating(false); // バリデーション無視
factory.setIgnoringComments(true); // コメント無視
// コンテアナの全パターンを初期化
_patterns = new HashMap<Integer, TvTPattern>();
_patterns = TvTConfigParser.parseXMLNodes(factory.newDocumentBuilder().parse(xml));
_currentId = getFirstId();
}
catch (IOException e)
{
_log.log(Level.WARNING, "Instance: can not find " + xml.getAbsolutePath() + " ! " + e.getMessage(), e);
}
catch (Exception e)
{
_log.log(Level.WARNING, "Instance: error while loading " + xml.getAbsolutePath() + " ! " + e.getMessage(), e);
}
}
/**
*
* @return
*/
public static TvTPattern getCurrentPattern(){
return _patterns.get(_currentId);
}
/**
* カレントIDをシャッフル
*/
public static void doCurrentIdShuffle(){
Random rnd = new Random();
Integer[] keys = _patterns.keySet().toArray(new Integer[_patterns.size()]);
_currentId = keys[rnd.nextInt(keys.length)];
}
/**
* 最初のIDを取得
*/
public static Integer getFirstId(){
Integer[] keys = _patterns.keySet().toArray(new Integer[_patterns.size()]);
return keys[0];
}
}