diff --git a/src/services/chat/ChatManager.java b/src/services/chat/ChatManager.java index 61a6224a3..672c2644d 100644 --- a/src/services/chat/ChatManager.java +++ b/src/services/chat/ChatManager.java @@ -65,12 +65,12 @@ import java.util.Locale; public class ChatManager extends Manager { - private ObjectDatabase mails; + private final ObjectDatabase mails; + private final ChatRoomService roomService; private int maxMailId; - private ChatRoomService roomService; - public ChatManager() { - roomService = new ChatRoomService(); + public ChatManager(Galaxy g) { + roomService = new ChatRoomService(g); mails = new CachedObjectDatabase<>("odb/mails.db"); maxMailId = 1; @@ -227,10 +227,6 @@ public class ChatManager extends Manager { } } - public void initializeGalaxyChannels(Galaxy galaxy) { - roomService.createSystemChannels(galaxy.getName()); - } - /* Friends List */ private void handleRequestFriendList(Player player) { diff --git a/src/services/chat/ChatRoomService.java b/src/services/chat/ChatRoomService.java index 1a73e5157..ea296a911 100644 --- a/src/services/chat/ChatRoomService.java +++ b/src/services/chat/ChatRoomService.java @@ -61,6 +61,7 @@ import network.packets.swg.zone.chat.ChatSendToRoom; import network.packets.swg.zone.chat.ChatUnbanAvatarFromRoom; import network.packets.swg.zone.chat.ChatUninviteFromRoom; import network.packets.swg.zone.insertion.ChatRoomList; +import resources.Galaxy; import resources.Terrain; import resources.chat.ChatAvatar; import resources.chat.ChatResult; @@ -87,24 +88,19 @@ import java.util.concurrent.ConcurrentHashMap; * @author Waverunner */ public class ChatRoomService extends Service { - private int maxChatRoomId; - private Map roomMap; // Map to keep track of each player's recent message for a room to prevent duplicates from client - private Map> messages; - private ObjectDatabase database; + private final Map> messages; + private final ObjectDatabase database; + private final Map roomMap; + private final Galaxy galaxy; + private int maxChatRoomId; - public ChatRoomService() { + public ChatRoomService(Galaxy g) { + galaxy = g; database = new CachedObjectDatabase<>("odb/chat_rooms.db"); roomMap = new ConcurrentHashMap<>(); messages = new ConcurrentHashMap<>(); maxChatRoomId = 1; - - database.load(); - database.traverse((room) -> { - if (room.getId() >= maxChatRoomId) - maxChatRoomId++; - roomMap.put(room.getId(), room); - }); } @Override @@ -112,6 +108,14 @@ public class ChatRoomService extends Service { registerForIntent(ChatRoomUpdateIntent.TYPE); registerForIntent(GalacticPacketIntent.TYPE); + database.load(); + database.traverse((room) -> { + if (room.getId() >= maxChatRoomId) + maxChatRoomId++; + roomMap.put(room.getId(), room); + }); + + createSystemChannels(galaxy.getName()); return super.initialize(); } diff --git a/src/services/galaxy/GalacticManager.java b/src/services/galaxy/GalacticManager.java index cdc454208..894839b6f 100644 --- a/src/services/galaxy/GalacticManager.java +++ b/src/services/galaxy/GalacticManager.java @@ -53,7 +53,7 @@ public class GalacticManager extends Manager { objectManager = new ObjectManager(); playerManager = new PlayerManager(); gameManager = new GameManager(); - chatManager = new ChatManager(); + chatManager = new ChatManager(g); prevPacketIntent = null; addChildService(objectManager); @@ -65,7 +65,6 @@ public class GalacticManager extends Manager { @Override public boolean initialize() { registerForIntent(InboundPacketIntent.TYPE); - chatManager.initializeGalaxyChannels(galaxy); return super.initialize(); }