Fixed /groupchat command

This commit is contained in:
Obique
2018-06-29 22:15:16 -05:00
parent f06c9f9382
commit 147ad74e91
6 changed files with 69 additions and 17 deletions
@@ -0,0 +1,37 @@
package com.projectswg.holocore.intents.support.global.chat;
import com.projectswg.holocore.resources.support.global.player.Player;
import me.joshlarson.jlcommon.control.Intent;
import org.jetbrains.annotations.NotNull;
public class ChatRoomMessageIntent extends Intent {
private final Player player;
private final String roomPath;
private final String message;
public ChatRoomMessageIntent(@NotNull Player player, @NotNull String roomPath, @NotNull String message) {
this.player = player;
this.roomPath = roomPath;
this.message = message;
}
@NotNull
public Player getPlayer() {
return player;
}
@NotNull
public String getRoomPath() {
return roomPath;
}
@NotNull
public String getMessage() {
return message;
}
public static void broadcast(@NotNull Player player, @NotNull String roomPath, @NotNull String message) {
new ChatRoomMessageIntent(player, roomPath, message).broadcast();
}
}
@@ -59,9 +59,6 @@ public class ChatRoomUpdateIntent extends Intent {
case CREATE:
this.title = title;
break;
case SEND_MESSAGE:
this.message = message;
break;
default:
this.target = target;
break;
@@ -135,7 +132,7 @@ public class ChatRoomUpdateIntent extends Intent {
BANNED_ADD_TARGET,
BANNED_REMOVE_TARGET,
INVITED_ADD_TARGET,
INVITED_REMOVE_TARGET,
SEND_MESSAGE
INVITED_REMOVE_TARGET
}
}
@@ -1,15 +1,31 @@
package com.projectswg.holocore.resources.support.global.commands.callbacks.group;
import com.projectswg.holocore.intents.support.global.chat.ChatRoomMessageIntent;
import com.projectswg.holocore.intents.support.global.chat.ChatRoomUpdateIntent;
import com.projectswg.holocore.resources.support.global.commands.ICmdCallback;
import com.projectswg.holocore.resources.support.global.player.Player;
import com.projectswg.holocore.resources.support.objects.swg.SWGObject;
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject;
import com.projectswg.holocore.resources.support.objects.swg.group.GroupObject;
import com.projectswg.holocore.services.support.objects.ObjectStorageService.ObjectLookup;
import org.jetbrains.annotations.NotNull;
public final class CmdGroupChat implements ICmdCallback {
@Override
public void execute(@NotNull Player player, SWGObject target, @NotNull String args) {
CreatureObject creature = player.getCreatureObject();
if (creature == null)
return;
long groupId = creature.getGroupId();
if (groupId == 0)
return;
GroupObject group = (GroupObject) ObjectLookup.getObjectById(groupId);
assert group != null : "groupId is set but no GroupObject exists";
ChatRoomMessageIntent.broadcast(player, group.getChatRoomPath(), args);
}
}
@@ -31,6 +31,7 @@ import com.projectswg.common.encoding.Encodable;
import com.projectswg.common.encoding.StringType;
import com.projectswg.common.network.NetBuffer;
import com.projectswg.common.network.packets.swg.zone.baselines.Baseline;
import com.projectswg.holocore.ProjectSWG;
import com.projectswg.holocore.intents.gameplay.player.group.GroupEventIntent;
import com.projectswg.holocore.intents.gameplay.player.group.GroupEventIntent.GroupEventType;
import com.projectswg.holocore.resources.support.data.collections.SWGList;
@@ -128,6 +129,10 @@ public class GroupObject extends SWGObject {
return size() >= 8;
}
public String getChatRoomPath() {
return "SWG." + ProjectSWG.getGalaxy().getName() + ".group." + getObjectId() + ".GroupChat";
}
public long getLeaderId() {
return leader.getObjectId();
}
@@ -362,15 +362,13 @@ public class GroupService extends Service {
new ObjectCreatedIntent(group).broadcast();
String galaxy = leader.getGalaxyName();
new ChatRoomUpdateIntent(leader, new ChatAvatar(leader.getCharacterChatName()), getGroupChatPath(group.getObjectId(), galaxy), String.valueOf(group.getObjectId()), false).broadcast();
new ChatRoomUpdateIntent(leader, new ChatAvatar(leader.getCharacterChatName()), group.getChatRoomPath(), String.valueOf(group.getObjectId()), false).broadcast();
sendSystemMessage(leader, "formed_self", "TT", leader.getCreatureObject().getObjectId());
onJoinGroup(member.getCreatureObject(), group);
}
private void destroyGroup(GroupObject group, Player player) {
String galaxy = player.getGalaxyName();
new ChatRoomUpdateIntent(getGroupChatPath(group.getObjectId(), galaxy), String.valueOf(group.getObjectId()), null, new ChatAvatar(player.getCharacterChatName()), null, ChatRoomUpdateIntent.UpdateType.DESTROY).broadcast();
new ChatRoomUpdateIntent(group.getChatRoomPath(), String.valueOf(group.getObjectId()), null, new ChatAvatar(player.getCharacterChatName()), null, ChatRoomUpdateIntent.UpdateType.DESTROY).broadcast();
sendGroupSystemMessage(group, "disbanded");
group.disbandGroup();
@@ -422,7 +420,7 @@ public class GroupService extends Service {
}
private void updateChatRoom(Player player, GroupObject group, UpdateType updateType) {
new ChatRoomUpdateIntent(player, getGroupChatPath(group.getObjectId(), player.getGalaxyName()), updateType).broadcast();
new ChatRoomUpdateIntent(player, group.getChatRoomPath(), updateType).broadcast();
}
private void clearInviteData(CreatureObject creature) {
@@ -457,10 +455,6 @@ public class GroupService extends Service {
}
}
private String getGroupChatPath(long groupId, String galaxy) {
return "SWG." + galaxy + ".group." + groupId + ".GroupChat";
}
private GroupObject getGroup(long groupId) {
return groups.get(groupId);
}
@@ -34,6 +34,7 @@ import com.projectswg.common.data.encodables.oob.OutOfBandPackage;
import com.projectswg.common.network.packets.SWGPacket;
import com.projectswg.common.network.packets.swg.zone.chat.*;
import com.projectswg.common.network.packets.swg.zone.insertion.ChatRoomList;
import com.projectswg.holocore.intents.support.global.chat.ChatRoomMessageIntent;
import com.projectswg.holocore.intents.support.global.zone.PlayerEventIntent;
import com.projectswg.holocore.intents.support.global.chat.ChatRoomUpdateIntent;
import com.projectswg.holocore.intents.support.global.network.InboundPacketIntent;
@@ -142,14 +143,16 @@ public class ChatRoomService extends Service {
case LEAVE:
chatRoomHandler.leaveChatChannel(crui.getPlayer(), crui.getPath());
break;
case SEND_MESSAGE:
chatRoomHandler.sendMessageToRoom(crui.getPlayer(), crui.getPath(), 0, crui.getMessage(), new OutOfBandPackage());
break;
default:
break;
}
}
@IntentHandler
private void handleChatRoomMessageIntent(ChatRoomMessageIntent crmi) {
chatRoomHandler.sendMessageToRoom(crmi.getPlayer(), crmi.getRoomPath(), 0, crmi.getMessage(), new OutOfBandPackage());
}
/* Chat Rooms */
private ChatResult performModeratedChecks(ChatRoom room, Player senderPlayer, ChatAvatar senderAvatar) {