mirror of
https://github.com/Rogiel/l2jserver2
synced 2025-12-08 08:23:11 +00:00
@@ -16,19 +16,62 @@
|
||||
*/
|
||||
package com.l2jserver.service.game;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.l2jserver.game.net.Lineage2Connection;
|
||||
import com.l2jserver.game.net.packet.server.CharacterTeleportPacket;
|
||||
import com.l2jserver.model.id.object.CharacterID;
|
||||
import com.l2jserver.model.world.L2Character;
|
||||
import com.l2jserver.model.world.Player;
|
||||
import com.l2jserver.model.world.capability.Spawnable;
|
||||
import com.l2jserver.model.world.player.event.PlayerTeleportEvent;
|
||||
import com.l2jserver.service.AbstractService;
|
||||
import com.l2jserver.service.AbstractService.Depends;
|
||||
import com.l2jserver.service.game.world.WorldService;
|
||||
import com.l2jserver.service.game.world.event.WorldEventDispatcher;
|
||||
import com.l2jserver.service.network.NetworkService;
|
||||
import com.l2jserver.util.dimensional.Coordinate;
|
||||
|
||||
/**
|
||||
* Default implementation for {@link SpawnService}
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*/
|
||||
@Depends({ WorldService.class })
|
||||
public class SpawnServiceImpl extends AbstractService implements SpawnService {
|
||||
/**
|
||||
* The {@link WorldService} event dispatcher
|
||||
*/
|
||||
private final WorldEventDispatcher eventDispatcher;
|
||||
/**
|
||||
* The {@link NetworkService}
|
||||
*/
|
||||
private final NetworkService networkService;
|
||||
|
||||
@Inject
|
||||
public SpawnServiceImpl(WorldEventDispatcher eventDispatcher,
|
||||
NetworkService networkService) {
|
||||
this.eventDispatcher = eventDispatcher;
|
||||
this.networkService = networkService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void spawn(Spawnable spawnable) {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public void teleport(Player player, Coordinate coordinate) {
|
||||
player.setPosition(coordinate);
|
||||
if (player instanceof L2Character) {
|
||||
final Lineage2Connection conn = networkService
|
||||
.discover((CharacterID) player.getID());
|
||||
if (conn == null)
|
||||
return;
|
||||
conn.write(new CharacterTeleportPacket(conn.getCharacter()));
|
||||
}
|
||||
// dispatch events
|
||||
eventDispatcher.dispatch(new PlayerTeleportEvent(player, coordinate));
|
||||
// TODO broadcast this player new position
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user