1
0
mirror of https://github.com/Rogiel/l2jserver2 synced 2025-12-08 08:23:11 +00:00

Better event system

Signed-off-by: Rogiel <rogiel@rogiel.com>
This commit is contained in:
2011-05-18 02:09:14 -03:00
parent be329a50e9
commit cd41122035
34 changed files with 660 additions and 186 deletions

View File

@@ -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