Core/Channels: Fix channel joins/changes

This commit is contained in:
hondacrx
2018-03-18 11:50:49 -04:00
parent 761af36d05
commit 49306f7a6e
3 changed files with 8 additions and 6 deletions
+2 -2
View File
@@ -250,7 +250,7 @@ namespace Game.Chat
} }
} }
public void LeaveChannel(Player player, bool send = true) public void LeaveChannel(Player player, bool send = true, bool suspend = false)
{ {
ObjectGuid guid = player.GetGUID(); ObjectGuid guid = player.GetGUID();
if (!IsOn(guid)) if (!IsOn(guid))
@@ -272,7 +272,7 @@ namespace Game.Chat
SendToOne(builder, guid); SendToOne(builder, guid);
*/ */
SendToOne(new ChannelNotifyLeftBuilder(this), guid); SendToOne(new ChannelNotifyLeftBuilder(this, suspend), guid);
} }
PlayerInfo info = _playersStore.LookupByKey(guid); PlayerInfo info = _playersStore.LookupByKey(guid);
@@ -78,9 +78,10 @@ namespace Game.Chat
class ChannelNotifyLeftBuilder : MessageBuilder class ChannelNotifyLeftBuilder : MessageBuilder
{ {
public ChannelNotifyLeftBuilder(Channel source) public ChannelNotifyLeftBuilder(Channel source, bool suspend)
{ {
_source = source; _source = source;
_suspended = suspend;
} }
public override ServerPacket Invoke(LocaleConstant locale = LocaleConstant.enUS) public override ServerPacket Invoke(LocaleConstant locale = LocaleConstant.enUS)
@@ -89,12 +90,13 @@ namespace Game.Chat
ChannelNotifyLeft notify = new ChannelNotifyLeft(); ChannelNotifyLeft notify = new ChannelNotifyLeft();
notify.Channel = _source.GetName(localeIdx); notify.Channel = _source.GetName(localeIdx);
notify.ChatChannelID = 0; notify.ChatChannelID = _source.GetChannelId();
//notify->Suspended = false; notify.Suspended = _suspended;
return notify; return notify;
} }
Channel _source; Channel _source;
bool _suspended;
} }
class ChannelSayBuilder : MessageBuilder class ChannelSayBuilder : MessageBuilder
+1 -1
View File
@@ -2706,7 +2706,7 @@ namespace Game.Entities
if (removeChannel != null) if (removeChannel != null)
{ {
removeChannel.LeaveChannel(this, sendRemove); // Leave old channel removeChannel.LeaveChannel(this, sendRemove, true); // Leave old channel
LeftChannel(removeChannel); // Remove from player's channel list LeftChannel(removeChannel); // Remove from player's channel list
cMgr.LeftChannel(removeChannel.GetChannelId(), removeChannel.GetZoneEntry()); // Delete if empty cMgr.LeftChannel(removeChannel.GetChannelId(), removeChannel.GetZoneEntry()); // Delete if empty