// // Licensed under the MIT License. See LICENSE file in the project root for full license information. // namespace MUnique.OpenMU.GuildServer; using MUnique.OpenMU.Interfaces; /// /// A which directly notifies the game server objects. /// public class GuildChangeToGameServerPublisher : IGuildChangePublisher { private readonly IDictionary _gameServers; /// /// Initializes a new instance of the class. /// /// The game servers. public GuildChangeToGameServerPublisher(IDictionary gameServers) { this._gameServers = gameServers; } /// public async ValueTask GuildPlayerKickedAsync(string playerName) { foreach (var gameServer in this._gameServers.Values) { await gameServer.GuildPlayerKickedAsync(playerName).ConfigureAwait(false); } } /// public async ValueTask GuildDeletedAsync(uint guildId) { foreach (var gameServer in this._gameServers.Values) { await gameServer.GuildDeletedAsync(guildId).ConfigureAwait(false); } } /// public async ValueTask AssignGuildToPlayerAsync(byte serverId, string characterName, GuildMemberStatus status) { if (this._gameServers.TryGetValue(serverId, out var gameServer)) { await gameServer.AssignGuildToPlayerAsync(characterName, status).ConfigureAwait(false); } } /// public async ValueTask AllianceCreatedAsync(uint masterGuildId, uint memberGuildId) { foreach (var gameServer in this._gameServers.Values) { await gameServer.AllianceCreatedAsync(masterGuildId, memberGuildId).ConfigureAwait(false); } } /// public async ValueTask AllianceDisbandedAsync(uint masterGuildId, uint memberGuildId) { foreach (var gameServer in this._gameServers.Values) { await gameServer.AllianceDisbandedAsync(masterGuildId, memberGuildId).ConfigureAwait(false); } } /// public async ValueTask GuildHostilityChangedAsync(uint guildIdA, IReadOnlyList allianceGuildIdsA, uint guildIdB, IReadOnlyList allianceGuildIdsB, bool created) { foreach (var gameServer in this._gameServers.Values) { await gameServer.GuildHostilityChangedAsync(guildIdA, allianceGuildIdsA, guildIdB, allianceGuildIdsB, created).ConfigureAwait(false); } } }