12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- using fis.media.Library.Media.EventArgs;
- using fis.media.Library.Media.Members;
- using fis.media.Library.Media.Players;
- using fis.media.Library.Media.Publisher;
- using fis.media.ThirdPartLibrary.Tencent;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace fis.media.Library.Media.Rooms
- {
- internal class TRTCRoom : Room, IRtcRoom
- {
- private static IRoom _instance;
- private TRTCChatRoom _trtcChatRoom;
- private int _rtcRoomId;
- private TRTCRoom():base(RoomTypeEnum.TRTCRoom)
- {
- _trtcChatRoom = TRTCChatRoom.Instance;
- }
- public static IRoom Instance => _instance ?? (_instance = new TRTCRoom());
- public int RTCRoomId => _rtcRoomId;
- public override int EnterRoom(AbstractMember member)
- {
- if (member is ActiveMember activeMember)
- {
- if (activeMember.IsOnline)
- {
- activeMember.ApplyPlayer(GenerateRtcPlayer(activeMember));
- }
- }
-
- return base.EnterRoom(member);
- }
- public static AbstractPlayer GenerateRtcPlayer(ActiveMember activeMember)
- {
- var player = new RtcPlayer(activeMember.Id);
- var regionInfo = activeMember.LayerConfig.RegionInfo;
- var channels = player.PlayerChannels;
- channels.Add(new PlayerChannel()
- {
- ChannelName = ChannelNameEnum.Main,
- ChannelMemberId = activeMember.Id,
- ChannelMemberRoleType = activeMember.RoleType,
- });
- switch (regionInfo.GetChannelTypeEnum())
- {
- case ChannelTypeEnum.OnlyMainRegion:
- break;
- case ChannelTypeEnum.MainRegionWithSideOne:
- channels.Add(new PlayerChannel()
- {
- ChannelName = ChannelNameEnum.SideOne,
- ChannelMemberId = activeMember.Id,
- ChannelMemberRoleType = activeMember.RoleType,
- });
- break;
- case ChannelTypeEnum.MainRegionWithSideTwo:
- channels.Add(new PlayerChannel()
- {
- ChannelName = ChannelNameEnum.SideTwo,
- ChannelMemberId = activeMember.Id,
- ChannelMemberRoleType = activeMember.RoleType,
- });
- break;
- default:break;
- }
-
- return player;
- }
- protected override bool DoDispose()
- {
- _trtcChatRoom.Exit();
- return base.DoDispose();
- }
- }
- }
|