/*
* This file is part of aion-emu <aion-emu.com>.
*
* aion-emu is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* aion-emu is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with aion-emu. If not, see <http://www.gnu.org/licenses/>.
*/
package com.aionemu.gameserver.dataholders;
import javax.inject.Inject;
import org.apache.log4j.Logger;
import com.aionemu.gameserver.dataholders.loadingutils.XmlDataLoader;
import com.aionemu.gameserver.utils.Util;
/**
*
* This class is holding whole static data, that is loaded from /data/static_data directory.<br>
* The data is loaded by XMLDataLoader using JAXB.<br>
* <br>
*
* This class temporarily also contains data loaded from txt files by DataLoaders. It'll be changed later.
*
* @author Luno , orz
*
*/
public final class DataManager
{
/** Logger used by this class and {@link StaticData} class */
static Logger log = Logger.getLogger(DataManager.class);
/**
* Npc data is keeping information about all npcs.
*
* @see NpcData
*/
public final NpcData NPC_DATA;
/**
* Gatherable data is keeping information about all gatherables.
*
* @see GatherableData
*/
public final GatherableData GATHERABLE_DATA;
/**
* Spawn data is keeping information about all spawn definitions.
*
* @see SpawnsData
*/
public final SpawnsData SPAWNS_DATA;
/**
* World maps data is keeping information about all world maps.
*
* @see WorldMapsData
*/
public final WorldMapsData WORLD_MAPS_DATA;
/**
* Experience table is keeping information about experience required for each level.
*
* @see PlayerExperienceTable
*/
public TradeListData TRADE_LIST_DATA;
public static PlayerExperienceTable PLAYER_EXPERIENCE_TABLE;
public TeleporterData TELEPORTER_DATA;
public TeleLocationData TELELOCATION_DATA;
public CubeExpandData CUBEEXPANDER_DATA;
public WarehouseExpandData WAREHOUSEEXPANDER_DATA;
public BindPointData BIND_POINT_DATA;
public QuestsData QUEST_DATA;
public QuestScriptsData QUEST_SCRIPTS_DATA;
public PlayerStatsData PLAYER_STATS_DATA;
public SummonStatsData SUMMON_STATS_DATA;
public static ItemData ITEM_DATA;
public static TitleData TITLE_DATA;
/**
* Player initial data table.<br />
* Contains initial player settings.
*/
public PlayerInitialData PLAYER_INITIAL_DATA;
/**
*
*/
public static SkillData SKILL_DATA;
public SkillTreeData SKILL_TREE_DATA;
/**
*
*/
public static WalkerData WALKER_DATA;
public ZoneData ZONE_DATA;
public GoodsListData GOODSLIST_DATA;
public static TribeRelationsData TRIBE_RELATIONS_DATA;
public static RecipeData RECIPE_DATA;
public PortalData PORTAL_DATA;
public static ItemSetData ITEM_SET_DATA;
public NpcSkillData NPC_SKILL_DATA;
private XmlDataLoader loader;
/**
* Constructor creating <tt>DataManager</tt> instance.<br>
* NOTICE: calling constructor implies loading whole data from /data/static_data immediately
*/
@Inject
public DataManager(XmlDataLoader xmlDataLoader)
{
Util.printSection("StaticDatas");
log.info("##### STATIC DATA [section beginning] #####");
this.loader = xmlDataLoader;
long start = System.currentTimeMillis();
StaticData data = loader.loadStaticData();
long time = System.currentTimeMillis() - start;
WORLD_MAPS_DATA = data.worldMapsData;
PLAYER_EXPERIENCE_TABLE = data.playerExperienceTable;
PLAYER_STATS_DATA = data.playerStatsData;
SUMMON_STATS_DATA = data.summonStatsData;
ITEM_DATA = data.itemData;
NPC_DATA = data.npcData;
GATHERABLE_DATA = data.gatherableData;
PLAYER_INITIAL_DATA = data.playerInitialData;
SKILL_DATA = data.skillData;
SKILL_TREE_DATA = data.skillTreeData;
SPAWNS_DATA = data.spawnsData;
TITLE_DATA = data.titleData;
TRADE_LIST_DATA = data.tradeListData;
TELEPORTER_DATA = data.teleporterData;
TELELOCATION_DATA = data.teleLocationData;
CUBEEXPANDER_DATA = data.cubeExpandData;
WAREHOUSEEXPANDER_DATA = data.warehouseExpandData;
BIND_POINT_DATA = data.bindPointData;
QUEST_DATA = data.questData;
QUEST_SCRIPTS_DATA = data.questsScriptData;
ZONE_DATA = data.zoneData;
WALKER_DATA = data.walkerData;
GOODSLIST_DATA = data.goodsListData;
TRIBE_RELATIONS_DATA = data.tribeRelationsData;
RECIPE_DATA = data.recipeData;
PORTAL_DATA = data.portalData;
ITEM_SET_DATA = data.itemSetData;
NPC_SKILL_DATA = data.npcSkillData;
// some sexy time message
long seconds = time / 1000;
String timeMsg = seconds > 0 ? seconds + " seconds" : time + " miliseconds";
log.info("##### [load time: " + timeMsg + "] #####");
log.info("##### STATIC DATA [section end] #####");
}
}