Arcturus-Community/src/main/java/com/eu/habbo/habbohotel/messenger/MessengerBuddy.java
2022-03-19 19:34:21 +00:00

198 lines
6.2 KiB
Java

package com.eu.habbo.habbohotel.messenger;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.modtool.WordFilter;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboGender;
import com.eu.habbo.messages.ISerialize;
import com.eu.habbo.messages.ServerMessage;
import com.eu.habbo.messages.outgoing.friends.FriendChatMessageComposer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class MessengerBuddy implements Runnable, ISerialize {
private static final Logger LOGGER = LoggerFactory.getLogger(MessengerBuddy.class);
private int id;
private String username;
private HabboGender gender = HabboGender.M;
private int online = 0;
private String look = "";
private String motto = "";
private short relation;
private int categoryId = 0;
private boolean inRoom;
private int userOne = 0;
public MessengerBuddy(ResultSet set) {
try {
this.id = set.getInt("id");
this.username = set.getString("username");
this.gender = HabboGender.valueOf(set.getString("gender"));
this.online = set.getInt("online");
this.motto = set.getString("motto");
this.look = set.getString("look");
this.relation = (short) set.getInt("relation");
this.categoryId = set.getInt("category");
this.userOne = set.getInt("user_one_id");
this.inRoom = false;
if (this.online == 1) {
Habbo habbo = Emulator.getGameServer().getGameClientManager().getHabbo(this.username);
if (habbo != null) {
this.inRoom = habbo.getHabboInfo().getCurrentRoom() != null;
}
}
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
}
}
public MessengerBuddy(ResultSet set, boolean value) {
try {
this.id = set.getInt("id");
this.username = set.getString("username");
this.look = set.getString("look");
this.relation = 0;
this.userOne = 0;
this.online = set.getInt("online");
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
}
}
public MessengerBuddy(int id, String username, String look, Short relation, int userOne) {
this.id = id;
this.username = username;
this.gender = HabboGender.M;
this.online = 0;
this.motto = "";
this.look = look;
this.relation = relation;
this.userOne = userOne;
}
public MessengerBuddy(Habbo habbo, int userOne) {
this.id = habbo.getHabboInfo().getId();
this.username = habbo.getHabboInfo().getUsername();
this.gender = habbo.getHabboInfo().getGender();
this.online = habbo.getHabboInfo().isOnline() ? 1 : 0;
this.motto = habbo.getHabboInfo().getMotto();
this.look = habbo.getHabboInfo().getLook();
this.relation = 0;
this.userOne = userOne;
this.inRoom = habbo.getHabboInfo().getCurrentRoom() != null;
}
public int getId() {
return this.id;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public HabboGender getGender() {
return this.gender;
}
public void setGender(HabboGender gender) {
this.gender = gender;
}
public int getOnline() {
return this.online;
}
public void setOnline(boolean value) {
this.online = (value ? 1 : 0);
}
public String getLook() {
return this.look;
}
public void setLook(String look) {
this.look = look;
}
public String getMotto() {
return this.motto;
}
public short getRelation() {
return this.relation;
}
public void setRelation(int relation) {
this.relation = (short) relation;
Emulator.getThreading().run(this);
}
public int getCategoryId() { return this.categoryId; }
public boolean inRoom() {
return this.inRoom;
}
public void inRoom(boolean value) {
this.inRoom = value;
}
@Override
public void run() {
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("UPDATE messenger_friendships SET relation = ? WHERE user_one_id = ? AND user_two_id = ?")) {
statement.setInt(1, this.relation);
statement.setInt(2, this.userOne);
statement.setInt(3, this.id);
statement.execute();
} catch (SQLException e) {
LOGGER.error("Caught SQL exception", e);
}
}
public void onMessageReceived(Habbo from, String message) {
Habbo habbo = Emulator.getGameServer().getGameClientManager().getHabbo(this.id);
if (habbo == null)
return;
Message chatMessage = new Message(from.getHabboInfo().getId(), this.id, message);
Emulator.getThreading().run(chatMessage);
if (WordFilter.ENABLED_FRIENDCHAT) {
chatMessage.setMessage(Emulator.getGameEnvironment().getWordFilter().filter(chatMessage.getMessage(), from));
}
habbo.getClient().sendResponse(new FriendChatMessageComposer(chatMessage));
}
@Override
public void serialize(ServerMessage message) {
message.appendInt(this.id);
message.appendString(this.username);
message.appendInt(this.gender.equals(HabboGender.M) ? 0 : 1);
message.appendBoolean(this.online == 1);
message.appendBoolean(this.inRoom); //IN ROOM
message.appendString(this.look);
message.appendInt(this.categoryId); // Friends category ID
message.appendString(this.motto);
message.appendString(""); //Last seen as DATETIMESTRING
message.appendString(""); // Realname or Facebookame as String
message.appendBoolean(false); //Offline messaging.
message.appendBoolean(false);
message.appendBoolean(false);
message.appendShort(this.relation);
}
}