root/trunk/AE-go_GameServer/src/com/aionemu/gameserver/services/PlayerService.java

967993
40
import com.aionemu.gameserver.dataholders.PlayerInitialData.PlayerCreationData.ItemType;
40
import com.aionemu.gameserver.dataholders.PlayerInitialData.PlayerCreationData.ItemType;
41
import com.aionemu.gameserver.model.account.PlayerAccountData;
41
import com.aionemu.gameserver.model.account.PlayerAccountData;
42
import com.aionemu.gameserver.model.gameobjects.Item;
42
import com.aionemu.gameserver.model.gameobjects.Item;
43
import com.aionemu.gameserver.model.gameobjects.player.Inventory;
43
import com.aionemu.gameserver.model.gameobjects.player.Storage;
44
import com.aionemu.gameserver.model.gameobjects.player.MacroList;
44
import com.aionemu.gameserver.model.gameobjects.player.MacroList;
45
import com.aionemu.gameserver.model.gameobjects.player.Player;
45
import com.aionemu.gameserver.model.gameobjects.player.Player;
46
import com.aionemu.gameserver.model.gameobjects.player.PlayerAppearance;
46
import com.aionemu.gameserver.model.gameobjects.player.PlayerAppearance;
47
import com.aionemu.gameserver.model.gameobjects.player.PlayerCommonData;
47
import com.aionemu.gameserver.model.gameobjects.player.PlayerCommonData;
48
import com.aionemu.gameserver.model.gameobjects.player.StorageType;
48
import com.aionemu.gameserver.model.gameobjects.stats.PlayerGameStats;
49
import com.aionemu.gameserver.model.gameobjects.stats.PlayerGameStats;
49
import com.aionemu.gameserver.model.gameobjects.stats.PlayerLifeStats;
50
import com.aionemu.gameserver.model.gameobjects.stats.PlayerLifeStats;
50
import com.aionemu.gameserver.model.gameobjects.stats.listeners.TitleChangeListener;
51
import com.aionemu.gameserver.model.gameobjects.stats.listeners.TitleChangeListener;
...
...
125
		return DAOManager.getDAO(PlayerDAO.class).saveNewPlayer(player.getCommonData(), accountId, accountName) 
126
		return DAOManager.getDAO(PlayerDAO.class).saveNewPlayer(player.getCommonData(), accountId, accountName) 
126
		&& DAOManager.getDAO(PlayerAppearanceDAO.class).store(player)
127
		&& DAOManager.getDAO(PlayerAppearanceDAO.class).store(player)
127
		&& DAOManager.getDAO(PlayerSkillListDAO.class).storeSkills(player)
128
		&& DAOManager.getDAO(PlayerSkillListDAO.class).storeSkills(player)
128
		&& DAOManager.getDAO(InventoryDAO.class).store(player.getInventory())
129
		&& DAOManager.getDAO(InventoryDAO.class).store(player)
129
		&& DAOManager.getDAO(PlayerTitleListDAO.class).storeTitles(player);
130
		&& DAOManager.getDAO(PlayerTitleListDAO.class).storeTitles(player);
130
	}
131
	}
131
132
...
...
137
	public void storePlayer(Player player)
138
	public void storePlayer(Player player)
138
	{
139
	{
139
		DAOManager.getDAO(PlayerDAO.class).storePlayer(player);
140
		DAOManager.getDAO(PlayerDAO.class).storePlayer(player);
140
		DAOManager.getDAO(InventoryDAO.class).store(player.getInventory());
141
		DAOManager.getDAO(InventoryDAO.class).store(player);
141
		DAOManager.getDAO(PlayerSettingsDAO.class).saveSettings(player);
142
		DAOManager.getDAO(PlayerSettingsDAO.class).saveSettings(player);
142
		DAOManager.getDAO(QuestListDAO.class).store(player.getObjectId(), player.getQuestStateList());
143
		DAOManager.getDAO(QuestListDAO.class).store(player.getObjectId(), player.getQuestStateList());
143
		DAOManager.getDAO(PlayerTitleListDAO.class).storeTitles(player);
144
		DAOManager.getDAO(PlayerTitleListDAO.class).storeTitles(player);
...
...
161
162
162
		player = new Player(new PlayerController(), pcd, appereance);
163
		player = new Player(new PlayerController(), pcd, appereance);
163
		player.setMacroList(macroses);
164
		player.setMacroList(macroses);
164
		
165
165
		player.setSkillList(DAOManager.getDAO(PlayerSkillListDAO.class).loadSkillList(playerObjId));
166
		player.setSkillList(DAOManager.getDAO(PlayerSkillListDAO.class).loadSkillList(playerObjId));
166
		player.setKnownlist(new KnownList(player));
167
		player.setKnownlist(new KnownList(player));
167
		player.setFriendList(DAOManager.getDAO(FriendListDAO.class).load(player, world));
168
		player.setFriendList(DAOManager.getDAO(FriendListDAO.class).load(player, world));
168
		player.setBlockList(DAOManager.getDAO(BlockListDAO.class).load(player,world));
169
		player.setBlockList(DAOManager.getDAO(BlockListDAO.class).load(player,world));
169
		player.setTitleList(DAOManager.getDAO(PlayerTitleListDAO.class).loadTitleList(playerObjId));
170
		player.setTitleList(DAOManager.getDAO(PlayerTitleListDAO.class).loadTitleList(playerObjId));
170
		
171
171
		DAOManager.getDAO(PlayerSettingsDAO.class).loadSettings(player);
172
		DAOManager.getDAO(PlayerSettingsDAO.class).loadSettings(player);
172
173
173
		player.setPlayerStatsTemplate(DataManager.PLAYER_STATS_DATA.getTemplate(player));	
174
		player.setPlayerStatsTemplate(DataManager.PLAYER_STATS_DATA.getTemplate(player));	
174
		
175
175
		player.setGameStats(new PlayerGameStats(DataManager.PLAYER_STATS_DATA,player));
176
		player.setGameStats(new PlayerGameStats(DataManager.PLAYER_STATS_DATA,player));
176
		player.setLifeStats(new PlayerLifeStats(player, player.getPlayerStatsTemplate().getMaxHp(), player.getPlayerStatsTemplate().getMaxMp()));		
177
		player.setLifeStats(new PlayerLifeStats(player, player.getPlayerStatsTemplate().getMaxHp(), player.getPlayerStatsTemplate().getMaxMp()));		
177
		player.setEffectController(new EffectController(player));
178
		player.setEffectController(new EffectController(player));
178
		
179
179
		//update passive stats after effect controller and stats are initialized
180
		//update passive stats after effect controller and stats are initialized
180
		player.getController().updatePassiveStats();
181
		player.getController().updatePassiveStats();
181
		
182
182
		player.setQuestStateList(DAOManager.getDAO(QuestListDAO.class).load(player));
183
		player.setQuestStateList(DAOManager.getDAO(QuestListDAO.class).load(player));
183
		player.setInventory(DAOManager.getDAO(InventoryDAO.class).load(player));
184
		player.setStorage(DAOManager.getDAO(InventoryDAO.class).load(player, StorageType.CUBE), StorageType.CUBE);
185
		player.setStorage(DAOManager.getDAO(InventoryDAO.class).load(player, StorageType.REGULAR_WAREHOUSE), StorageType.REGULAR_WAREHOUSE);
186
		player.setStorage(DAOManager.getDAO(InventoryDAO.class).load(player, StorageType.ACCOUNT_WAREHOUSE), StorageType.ACCOUNT_WAREHOUSE);
187
184
		itemService.loadItemStones(player);
188
		itemService.loadItemStones(player);
185
		
189
186
		//if kinah was deleted by some reason it should be restored with 0 count
190
		//if kinah was deleted by some reason it should be restored with 0 count
187
		if(player.getInventory().getKinahItem() == null)
191
		if(player.getStorage(StorageType.CUBE.getId()).getKinahItem() == null)
188
		{
192
		{
189
			Item kinahItem = itemService.newItem(182400001, 0);
193
			Item kinahItem = itemService.newItem(182400001, 0);
190
			player.getInventory().onLoadHandler(kinahItem);
194
			player.getStorage(StorageType.CUBE.getId()).onLoadHandler(kinahItem);
191
		}
195
		}
192
196
197
		if(player.getStorage(StorageType.ACCOUNT_WAREHOUSE.getId()).getKinahItem() == null)
198
		{
199
			Item kinahItem = itemService.newItem(182400001, 0);
200
			player.getStorage(StorageType.ACCOUNT_WAREHOUSE.getId()).onLoadHandler(kinahItem);
201
		}
202
193
		if (player.getCommonData().getTitleId()>0)
203
		if (player.getCommonData().getTitleId()>0)
194
		{
204
		{
195
			TitleChangeListener.onTitleChange(player.getGameStats(), player.getCommonData().getTitleId(), true);
205
			TitleChangeListener.onTitleChange(player.getGameStats(), player.getCommonData().getTitleId(), true);
...
...
216
		WorldPosition position = world.createPosition(ld.getMapId(), ld.getX(), ld.getY(), ld.getZ(), ld.getHeading());
226
		WorldPosition position = world.createPosition(ld.getMapId(), ld.getX(), ld.getY(), ld.getZ(), ld.getHeading());
217
227
218
		playerCommonData.setPosition(position);
228
		playerCommonData.setPosition(position);
219
		
229
220
		Player newPlayer = new Player(new PlayerController(), playerCommonData, playerAppearance);
230
		Player newPlayer = new Player(new PlayerController(), playerCommonData, playerAppearance);
221
		
231
222
		// Starting skills
232
		// Starting skills
223
		SkillLearnService.addNewSkills(newPlayer, true);
233
		SkillLearnService.addNewSkills(newPlayer, true);
224
		
234
225
		// Starting items
235
		// Starting items
226
		PlayerCreationData playerCreationData = 
236
		PlayerCreationData playerCreationData = 
227
			DataManager.PLAYER_INITIAL_DATA.getPlayerCreationData(playerCommonData.getPlayerClass());
237
			DataManager.PLAYER_INITIAL_DATA.getPlayerCreationData(playerCommonData.getPlayerClass());
228
		
238
229
		List<ItemType> items = playerCreationData.getItems();
239
		List<ItemType> items = playerCreationData.getItems();
230
		
240
231
		Inventory playerInventory = new Inventory(newPlayer);
241
		Storage playerInventory = new Storage(newPlayer, StorageType.CUBE);
232
		newPlayer.setInventory(playerInventory);
242
		Storage regularWarehouse = new Storage(newPlayer,StorageType.REGULAR_WAREHOUSE);
233
		
243
		Storage accountWarehouse = new Storage(newPlayer,StorageType.ACCOUNT_WAREHOUSE);
244
		newPlayer.setStorage(playerInventory, StorageType.CUBE);
245
		newPlayer.setStorage(regularWarehouse, StorageType.REGULAR_WAREHOUSE);
246
		newPlayer.setStorage(accountWarehouse, StorageType.ACCOUNT_WAREHOUSE);
247
234
		for(ItemType itemType : items)
248
		for(ItemType itemType : items)
235
		{
249
		{
236
			int itemId = itemType.getTemplate().getItemId();		
250
			int itemId = itemType.getTemplate().getItemId();		
237
			Item item = itemService.newItem(itemId, itemType.getCount());
251
			Item item = itemService.newItem(itemId, itemType.getCount());
238
			if(item == null)
252
			if(item == null)
239
				continue;
253
				continue;
240
			
254
241
			//When creating new player - all equipment that has slot values will be equipped
255
			//When creating new player - all equipment that has slot values will be equipped
242
			//Make sure you will not put into xml file more items than possible to equip.
256
			//Make sure you will not put into xml file more items than possible to equip.
243
			ItemTemplate itemTemplate = item.getItemTemplate();
257
			ItemTemplate itemTemplate = item.getItemTemplate();
...
...
248
				List<ItemSlot> itemSlots = ItemSlot.getSlotsFor(itemTemplate.getItemSlot());
262
				List<ItemSlot> itemSlots = ItemSlot.getSlotsFor(itemTemplate.getItemSlot());
249
				item.setEquipmentSlot(itemSlots.get(0).getSlotIdMask());
263
				item.setEquipmentSlot(itemSlots.get(0).getSlotIdMask());
250
			}
264
			}
251
			
265
252
			playerInventory.onLoadHandler(item);
266
			playerInventory.onLoadHandler(item);
253
		}	
267
		}
254
		
268
		Item accountKinah = itemService.newItem(182400001, 0);
269
		accountWarehouse.onLoadHandler(accountKinah);
270
255
		return newPlayer;
271
		return newPlayer;
256
	}
272
	}
257
273
...
...
279
	public void playerLoggedOut(Player player)
295
	public void playerLoggedOut(Player player)
280
	{
296
	{
281
		player.onLoggedOut();
297
		player.onLoggedOut();
282
		
298
283
		if(player.getLifeStats().isAlreadyDead())
299
		if(player.getLifeStats().isAlreadyDead())
284
			player.getController().moveToBindLocation(false);
300
			player.getController().moveToBindLocation(false);
285
		
301
286
		player.getCommonData().setOnline(false);
302
		player.getCommonData().setOnline(false);
287
		player.getCommonData().setLastOnline(new Timestamp(System.currentTimeMillis()));
303
		player.getCommonData().setLastOnline(new Timestamp(System.currentTimeMillis()));
288
			
304
289
		player.getController().delete();
305
		player.getController().delete();
290
		player.setClientConnection(null);
306
		player.setClientConnection(null);
291
		DAOManager.getDAO(PlayerDAO.class).onlinePlayer(player, false);
307
		DAOManager.getDAO(PlayerDAO.class).onlinePlayer(player, false);
292
		
308
293
		//TODO this is a temprorary solution till GroupService will be introduced
309
		//TODO this is a temprorary solution till GroupService will be introduced
294
		PlayerGroup playerGroup = player.getPlayerGroup();
310
		PlayerGroup playerGroup = player.getPlayerGroup();
295
		if(playerGroup != null)
311
		if(playerGroup != null)
296
			playerGroup.removePlayerFromGroup(player);
312
			playerGroup.removePlayerFromGroup(player);
297
		
313
298
		storePlayer(player);
314
		storePlayer(player);
299
	}
315
	}
300
316
...
...
401
			DAOManager.getDAO(PlayerMacrossesDAO.class).deleteMacro(player.getObjectId(), macroOrder);
417
			DAOManager.getDAO(PlayerMacrossesDAO.class).deleteMacro(player.getObjectId(), macroOrder);
402
		}
418
		}
403
	}
419
	}
404
	
420
405
	/**
421
	/**
406
	 * Gets a player ONLY if he is in the cache
422
	 * Gets a player ONLY if he is in the cache
407
	 * @return Player or null if not cached
423
	 * @return Player or null if not cached