using Google.Protobuf; using Google.Protobuf.WellKnownTypes; using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; using MetaAssets; using static ClientToGameMessage.Types; using BEACON_GUID = System.String; using USER_GUID = System.String; namespace GameServer.PacketHandler; [PacketHandler("allgameserver", typeof(ServerMessage.Types.GS2GS_NTF_UPDATE_BEACON_SHOP_ITEM), typeof(NtfBeaconShopUpdateItemMQPacketHandler), typeof(RabbitMQ4Game))] public class NtfBeaconShopUpdateItemMQPacketHandler : PacketRecvHandler { public override async Task onProcessPacket(ISession session, IMessage recvMessage) { var result = new Result(); var msg = recvMessage as ServerMessage; ArgumentNullException.ThrowIfNull(msg); BEACON_GUID beacon_guid = msg.NtfUpdateBeaconShopItem.TargetBeaconGuid; USER_GUID beacon_owner_guid = msg.NtfUpdateBeaconShopItem.TargetUserGuid; BoolType hasBeaconShopItem = msg.NtfUpdateBeaconShopItem.HasBeaconShopItem; var server_logic = GameServerApp.getServerLogic(); ArgumentNullException.ThrowIfNull(server_logic); (result, var found_ugc_npc, var ugc_npc_owner) = await NpcHelper.findUgcNpc(beacon_guid, beacon_owner_guid); if (found_ugc_npc == null) { return result; } var ugc_npc_beacon_shop_action = found_ugc_npc.getEntityAction(); ugc_npc_beacon_shop_action.setUpdateBeaconShopItem(); var packet = BeaconShopNotifyHelper.makeAckBeaconShopRefreshPacket(beacon_guid, hasBeaconShopItem); if (server_logic.getServerType().toServerType() == ServerType.Channel) { var receivers = server_logic.getPlayerManager().getUsers(); foreach (var receiver in receivers) { receiver.Value.send_S2C_NTF_BEACON_SHOP_REFRESH(beacon_guid, hasBeaconShopItem); } } else if(server_logic.getServerType().toServerType() == ServerType.Indun) { foreach (var each in InstanceRoomManager.Instance.getInstanceRooms()) { var room_key = each.Key; var instance_room = each.Value; found_ugc_npc = instance_room.getMap().findUgcNpc(beacon_guid); if (null != found_ugc_npc) { instance_room.Broadcast(packet); } } } return result; } }