/* * IDK Game Server by Steve Winfield * https://github.com/WinfieldSteve */ package org.stevewinfield.suja.idk.game.messenger; import org.apache.log4j.Logger; import org.stevewinfield.suja.idk.Bootloader; import org.stevewinfield.suja.idk.communication.ISerialize; import org.stevewinfield.suja.idk.communication.MessageWriter; import org.stevewinfield.suja.idk.network.sessions.Session; import java.sql.ResultSet; import java.sql.SQLException; public class MessengerBuddy implements ISerialize { private static final Logger logger = Logger.getLogger(MessengerBuddy.class); // getters public int getPlayerId() { return playerId; } public String getPlayerName() { return playerName; } public String getAvatar() { return avatar; } public String getMission() { return mission; } public String getLastOnline() { return lastOnline; } public boolean isOnline() { return online; } public boolean isInRoom() { return inRoom; } public Session getSession() { return session; } public MessengerBuddy() { this.playerId = 0; this.playerName = ""; this.avatar = ""; this.mission = ""; this.lastOnline = ""; this.online = false; } public void setSession(final Session session) { this.session = session; this.online = this.session != null; this.inRoom = online && this.session.isInRoom(); } public void update() { this.inRoom = online && this.session.isInRoom(); } public void set(final ResultSet row) throws SQLException { this.playerId = row.getInt("id"); this.playerName = row.getString("nickname"); this.avatar = row.getString("figurecode"); this.mission = row.getString("motto"); this.lastOnline = ""; this.session = Bootloader.getSessionManager().getAuthenticatedSession(playerId); this.online = this.session != null; this.inRoom = online && this.session.isInRoom(); } public void set(final int playerId, final String playerName, final String avatar, final String mission) { this.playerId = playerId; this.playerName = playerName; this.avatar = avatar; this.mission = mission; this.lastOnline = ""; this.session = Bootloader.getSessionManager().getAuthenticatedSession(playerId); this.online = this.session != null; this.inRoom = online && this.session.isInRoom(); } // fields private int playerId; private String playerName; private String avatar; private String mission; private String lastOnline; private boolean online; private Session session; private boolean inRoom; @Override public void serialize(final MessageWriter writer) { writer.push(this.playerId); writer.push(this.playerName); writer.push(true); writer.push(this.online); writer.push(this.inRoom); writer.push(this.online ? this.avatar : ""); // if on -> figure writer.push(false); writer.push(this.online ? this.mission : ""); // if on -> motto writer.push(this.online ? "" : this.lastOnline); writer.push(""); writer.push(""); } }