/*
* 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.utils.guice;
import com.aionemu.commons.services.ScriptService;
import com.aionemu.gameserver.ShutdownHook;
import com.aionemu.gameserver.dataholders.BindPointData;
import com.aionemu.gameserver.dataholders.CubeExpandData;
import com.aionemu.gameserver.dataholders.DataManager;
import com.aionemu.gameserver.dataholders.GatherableData;
import com.aionemu.gameserver.dataholders.GoodsListData;
import com.aionemu.gameserver.dataholders.ItemData;
import com.aionemu.gameserver.dataholders.ItemSetData;
import com.aionemu.gameserver.dataholders.NpcData;
import com.aionemu.gameserver.dataholders.NpcSkillData;
import com.aionemu.gameserver.dataholders.PlayerExperienceTable;
import com.aionemu.gameserver.dataholders.PlayerInitialData;
import com.aionemu.gameserver.dataholders.PlayerStatsData;
import com.aionemu.gameserver.dataholders.PortalData;
import com.aionemu.gameserver.dataholders.QuestScriptsData;
import com.aionemu.gameserver.dataholders.QuestsData;
import com.aionemu.gameserver.dataholders.SkillData;
import com.aionemu.gameserver.dataholders.SkillTreeData;
import com.aionemu.gameserver.dataholders.SpawnsData;
import com.aionemu.gameserver.dataholders.SummonStatsData;
import com.aionemu.gameserver.dataholders.TeleLocationData;
import com.aionemu.gameserver.dataholders.TeleporterData;
import com.aionemu.gameserver.dataholders.TradeListData;
import com.aionemu.gameserver.dataholders.WalkerData;
import com.aionemu.gameserver.dataholders.WarehouseExpandData;
import com.aionemu.gameserver.dataholders.WorldMapsData;
import com.aionemu.gameserver.dataholders.ZoneData;
import com.aionemu.gameserver.dataholders.loadingutils.XmlServiceProxy;
import com.aionemu.gameserver.questEngine.QuestEngine;
import com.aionemu.gameserver.services.AbyssService;
import com.aionemu.gameserver.services.AccountService;
import com.aionemu.gameserver.services.CraftService;
import com.aionemu.gameserver.services.CraftSkillUpdateService;
import com.aionemu.gameserver.services.CubeExpandService;
import com.aionemu.gameserver.services.DebugService;
import com.aionemu.gameserver.services.DropService;
import com.aionemu.gameserver.services.DuelService;
import com.aionemu.gameserver.services.EnchantService;
import com.aionemu.gameserver.services.ExchangeService;
import com.aionemu.gameserver.services.GroupService;
import com.aionemu.gameserver.services.InstanceService;
import com.aionemu.gameserver.services.ItemService;
import com.aionemu.gameserver.services.LegionService;
import com.aionemu.gameserver.services.MailService;
import com.aionemu.gameserver.services.PeriodicSaveService;
import com.aionemu.gameserver.services.PlayerService;
import com.aionemu.gameserver.services.PrivateStoreService;
import com.aionemu.gameserver.services.PunishmentService;
import com.aionemu.gameserver.services.QuestService;
import com.aionemu.gameserver.services.RespawnService;
import com.aionemu.gameserver.services.ServiceProxy;
import com.aionemu.gameserver.services.SkillLearnService;
import com.aionemu.gameserver.services.SocialService;
import com.aionemu.gameserver.services.StigmaService;
import com.aionemu.gameserver.services.TeleportService;
import com.aionemu.gameserver.services.TradeService;
import com.aionemu.gameserver.services.WarehouseService;
import com.aionemu.gameserver.services.WeatherService;
import com.aionemu.gameserver.services.ZoneService;
import com.aionemu.gameserver.spawnengine.RiftSpawnManager;
import com.aionemu.gameserver.spawnengine.SpawnEngine;
import com.aionemu.gameserver.utils.chathandlers.ChatHandlers;
import com.aionemu.gameserver.utils.chathandlers.ChatHandlersFactory;
import com.aionemu.gameserver.world.World;
import com.google.inject.AbstractModule;
import com.google.inject.Injector;
import com.google.inject.Provides;
import com.google.inject.Scopes;
import com.google.inject.Singleton;
/**
* This is a configuration module for <tt>Injector</tt> that is used in aion-emu.<br>
*
* @author Luno
*
*/
public class DataInjectionModule extends AbstractModule
{
private Injector injector;
public void setInjector(Injector injector)
{
this.injector = injector;
}
@Override
protected void configure()
{
bind(XmlServiceProxy.class).in(Scopes.SINGLETON);
bind(ShutdownHook.class).in(Scopes.SINGLETON);
bind(DataManager.class).asEagerSingleton();
bind(World.class).asEagerSingleton();
bind(SpawnEngine.class).asEagerSingleton();
bind(QuestEngine.class).asEagerSingleton();
bind(PeriodicSaveService.class).in(Scopes.SINGLETON);
bind(PlayerService.class).in(Scopes.SINGLETON);
bind(AccountService.class).in(Scopes.SINGLETON);
bind(SocialService.class).in(Scopes.SINGLETON);
bind(ScriptService.class).in(Scopes.SINGLETON);
bind(ItemService.class).in(Scopes.SINGLETON);
bind(TradeService.class).in(Scopes.SINGLETON);
bind(DropService.class).asEagerSingleton();
bind(CubeExpandService.class).in(Scopes.SINGLETON);
bind(RiftSpawnManager.class).in(Scopes.SINGLETON);
bind(ExchangeService.class).in(Scopes.SINGLETON);
bind(WeatherService.class).in(Scopes.SINGLETON);
bind(LegionService.class).in(Scopes.SINGLETON);
bind(PrivateStoreService.class).in(Scopes.SINGLETON);
bind(AbyssService.class).in(Scopes.SINGLETON);
bind(RespawnService.class).in(Scopes.SINGLETON);
bind(TeleportService.class).in(Scopes.SINGLETON);
bind(SkillLearnService.class).in(Scopes.SINGLETON);
bind(GroupService.class).in(Scopes.SINGLETON);
bind(CraftService.class).in(Scopes.SINGLETON);
bind(CraftSkillUpdateService.class).in(Scopes.SINGLETON);
bind(WarehouseService.class).in(Scopes.SINGLETON);
bind(PunishmentService.class).in(Scopes.SINGLETON);
bind(ZoneService.class).in(Scopes.SINGLETON);
bind(DuelService.class).in(Scopes.SINGLETON);
bind(ServiceProxy.class).in(Scopes.SINGLETON);
bind(QuestService.class).in(Scopes.SINGLETON);
bind(MailService.class).in(Scopes.SINGLETON);
bind(InstanceService.class).in(Scopes.SINGLETON);
bind(EnchantService.class).in(Scopes.SINGLETON);
bind(DebugService.class).asEagerSingleton();
bind(StigmaService.class).in(Scopes.SINGLETON);
}
@Provides
SpawnsData provideSpawnData(DataManager datamanager)
{
return datamanager.SPAWNS_DATA;
}
@Provides
WorldMapsData provideWorldMapsData(DataManager datamanager)
{
return datamanager.WORLD_MAPS_DATA;
}
@Provides
NpcData provideNpcData(DataManager datamanager)
{
return datamanager.NPC_DATA;
}
@SuppressWarnings("static-access")
@Provides
ItemData provideItemData(DataManager datamanager)
{
return datamanager.ITEM_DATA;
}
@Provides
CubeExpandData provideCubeExpand(DataManager datamanager)
{
return datamanager.CUBEEXPANDER_DATA;
}
@Provides
WarehouseExpandData provideWarehouseExpand(DataManager datamanager)
{
return datamanager.WAREHOUSEEXPANDER_DATA;
}
@Provides
GatherableData provideGatherableData(DataManager datamanager)
{
return datamanager.GATHERABLE_DATA;
}
@Provides
BindPointData provideBindPointData(DataManager datamanager)
{
return datamanager.BIND_POINT_DATA;
}
@Provides
@Singleton
ChatHandlers provideChatHandlers()
{
return new ChatHandlersFactory(injector).createChatHandlers();
}
@Provides
TradeListData provideTradeListData(DataManager datamanager)
{
return datamanager.TRADE_LIST_DATA;
}
@Provides
TeleporterData provideTeleporterData(DataManager datamanager)
{
return datamanager.TELEPORTER_DATA;
}
@Provides
TeleLocationData provideTeleLocationData(DataManager datamanager)
{
return datamanager.TELELOCATION_DATA;
}
@Provides
GoodsListData provideGoodsListData(DataManager datamanager)
{
return datamanager.GOODSLIST_DATA;
}
@Provides
SkillTreeData provideSkillTreeData(DataManager datamanager)
{
return datamanager.SKILL_TREE_DATA;
}
@SuppressWarnings("static-access")
@Provides
SkillData provideSkillData(DataManager datamanager)
{
return datamanager.SKILL_DATA;
}
@SuppressWarnings("static-access")
@Provides
WalkerData provideWalkerData(DataManager datamanager)
{
return datamanager.WALKER_DATA;
}
@SuppressWarnings("static-access")
@Provides
PlayerExperienceTable providePlayerExpTable(DataManager datamanager)
{
return datamanager.PLAYER_EXPERIENCE_TABLE;
}
@Provides
PlayerStatsData providePlayerStatsData(DataManager datamanager)
{
return datamanager.PLAYER_STATS_DATA;
}
@Provides
SummonStatsData provideSummonStatsData(DataManager datamanager)
{
return datamanager.SUMMON_STATS_DATA;
}
@Provides
PlayerInitialData providePlayerInitialData(DataManager datamanager)
{
return datamanager.PLAYER_INITIAL_DATA;
}
@Provides
ZoneData provideZoneData(DataManager datamanager)
{
return datamanager.ZONE_DATA;
}
@Provides
PortalData providePortalData(DataManager datamanager)
{
return datamanager.PORTAL_DATA;
}
@SuppressWarnings("static-access")
@Provides
ItemSetData provideItemSetData(DataManager datamanager)
{
return datamanager.ITEM_SET_DATA;
}
@Provides
QuestsData provideQuestsData(DataManager datamanager)
{
return datamanager.QUEST_DATA;
}
@Provides
QuestScriptsData provideQuestScriptsData(DataManager datamanager)
{
return datamanager.QUEST_SCRIPTS_DATA;
}
@Provides
NpcSkillData provideNpcSkillData(DataManager datamanager)
{
return datamanager.NPC_SKILL_DATA;
}
}