root/trunk/AE-go_GameServer/src/com/aionemu/gameserver/services/PlayerService.java
| 967 | 993 | ||
|---|---|---|---|
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 |
Download diff