1 /**
2  *
3  */
4 package games.stendhal.server.core.events;
5 
6 import games.stendhal.common.NotificationType;
7 import games.stendhal.server.core.engine.SingletonRepository;
8 import games.stendhal.server.core.engine.dbcommand.StoreMessageCommand;
9 import games.stendhal.server.entity.player.Player;
10 import marauroa.server.db.command.DBCommandQueue;
11 
12 /**
13  * Sends a private message to a player after a short delay, and if they weren't online, uses postman
14  *
15  * @author kymara
16  *
17  */
18 public class GuaranteedDelayedPlayerTextSender extends DelayedPlayerTextSender {
19 	private final String source;
20 
21 	/**
22 	 * Creates a new GuaranteedDelayedPlayerTextSender.
23 	 * @param source
24 	 * @param player
25 	 * @param message
26 	 * @param seconds
27 	 */
GuaranteedDelayedPlayerTextSender(final String source, final Player player, final String message, int seconds)28 	public GuaranteedDelayedPlayerTextSender(final String source, final Player player, final String message,
29 			int seconds) {
30 		super(player, message, seconds);
31 		this.source = source;
32 	}
33 
34 	@Override
onTurnReached(final int currentTurn)35 	public void onTurnReached(final int currentTurn) {
36 		final String playername = player.getName();
37 		final Player playerNow = SingletonRepository.getRuleProcessor().getPlayer(playername);
38 		if (playerNow != null) {
39 			playerNow.sendPrivateText(NotificationType.PRIVMSG, source + " tells you:\n" + message);
40 		} else {
41 			DBCommandQueue.get().enqueue(new StoreMessageCommand(source, playername, message, "N"));
42 		}
43 	}
44 }
45