254 lines
7.4 KiB
C#
254 lines
7.4 KiB
C#
|
using Thousandto.Code.Center;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
|
|||
|
namespace Thousandto.Code.Logic
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 帮会语音的设置
|
|||
|
/// </summary>
|
|||
|
public class GuildVoiceSetting : IGuildVoiceSetting
|
|||
|
{
|
|||
|
//是否是指挥者模式
|
|||
|
private bool _voiceIsCmderModel = false;
|
|||
|
//召集的时间
|
|||
|
private DateTime _recieveTogetherTime;
|
|||
|
private int _togetherCDTimeSpan = 300;//秒
|
|||
|
//全体静音的时间
|
|||
|
private DateTime _recieveAllMuteTime ;
|
|||
|
private int _allMuteCDTimeSpan = 30;//秒
|
|||
|
//麦权
|
|||
|
private bool _mcPermission = false;
|
|||
|
|
|||
|
public bool McPermisson
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
//如果是自由模式,那么就是上麦,如果不是自由模式,那么就需要判断当前状态讲话状态
|
|||
|
//(!_voiceIsCmderModel || (_voiceIsCmderModel && GameCenter.GuildSystem.TalkState != VoiceState.None))
|
|||
|
return _mcPermission;
|
|||
|
}
|
|||
|
set
|
|||
|
{
|
|||
|
if (_mcPermission != value)
|
|||
|
{
|
|||
|
_mcPermission = value;
|
|||
|
ReqPlayerTalk();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public bool McIsMute
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return GameCenter.RealTimeVoiceSystem.GetMicrophoneMute();
|
|||
|
}
|
|||
|
|
|||
|
set
|
|||
|
{
|
|||
|
GameCenter.RealTimeVoiceSystem.SetMicrophoneMute(value);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public bool VoiceModel
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return _voiceIsCmderModel;
|
|||
|
}
|
|||
|
|
|||
|
set
|
|||
|
{
|
|||
|
if (_voiceIsCmderModel != value)
|
|||
|
{
|
|||
|
_voiceIsCmderModel = value;
|
|||
|
ReqSetVoiceModel();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public string TogetherCDText
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
var ts = _recieveTogetherTime.AddSeconds(_togetherCDTimeSpan) - DateTime.Now;
|
|||
|
if (ts > TimeSpan.Zero)
|
|||
|
{
|
|||
|
return Thousandto.Cfg.Data.DeclareMessageString.Get(Thousandto.Cfg.Data.DeclareMessageString.C_GUILD_VOICE_TOGETHER) + string.Format("[ff0000]{0:d2}:{1:d2}[-]", ts.Minutes, ts.Seconds);
|
|||
|
}
|
|||
|
return Thousandto.Cfg.Data.DeclareMessageString.Get(Thousandto.Cfg.Data.DeclareMessageString.C_GUILD_VOICE_TOGETHER);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public bool EnableCallTogether
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return IsGuildLeader() && _recieveTogetherTime.AddSeconds(_togetherCDTimeSpan) < DateTime.Now;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
public bool EnableChangeVoiceModel
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return IsGuildLeader();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public bool EnableChangeMcPermisson
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return _voiceIsCmderModel;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public string AllMuteCDText
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
var ts = _recieveAllMuteTime.AddSeconds(_allMuteCDTimeSpan) - DateTime.Now;
|
|||
|
if (ts > TimeSpan.Zero)
|
|||
|
{
|
|||
|
return Thousandto.Cfg.Data.DeclareMessageString.Get(Thousandto.Cfg.Data.DeclareMessageString.C_GUILD_VOICE_ALLMUTE) + string.Format("[ff0000]{0:d2}:{1:d2}[-]", ts.Minutes, ts.Seconds);
|
|||
|
}
|
|||
|
return Thousandto.Cfg.Data.DeclareMessageString.Get(Thousandto.Cfg.Data.DeclareMessageString.C_GUILD_VOICE_ALLMUTE);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public bool EnableAllMute
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return IsGuildLeader() && _recieveAllMuteTime.AddSeconds(_allMuteCDTimeSpan) < DateTime.Now;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private bool IsGuildLeader()
|
|||
|
{
|
|||
|
//if (LocalPlayerRoot.LocalPlayer != null)
|
|||
|
//{
|
|||
|
// var item = GameCenter.GuildSystem.OnGetGuildOfficial();
|
|||
|
// if (item != null)
|
|||
|
// {
|
|||
|
// //官职(1普通成员,2长老,3副会长,4会长,0学徒)
|
|||
|
// return item.Level == 3 || item.Level == 4;
|
|||
|
// }
|
|||
|
//}
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
#region//服务器处理
|
|||
|
#region//请求
|
|||
|
//请求讲话
|
|||
|
public void ReqPlayerTalk()
|
|||
|
{
|
|||
|
//发送给服务器一个我要讲话的需求
|
|||
|
//new MSG_Guild.ReqSetMicState() { state = (_mcPermission ? 1 : 0) }.Send();
|
|||
|
}
|
|||
|
//请求集合
|
|||
|
public void ReqCallTogether()
|
|||
|
{
|
|||
|
//这里给服务器发送一个集合的请求,应该会分发到所有的玩家
|
|||
|
// new MSG_Guild.ReqCallUpVoicer().Send();
|
|||
|
}
|
|||
|
|
|||
|
public void ReqSetVoiceModel()
|
|||
|
{
|
|||
|
//发送给服务器一个模式改变的消息
|
|||
|
//new MSG_Guild.ReqModifyVoiceMode() { mode = _voiceIsCmderModel?1:0 }.Send();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public void ReqSetAllUserMute()
|
|||
|
{
|
|||
|
//new MSG_Guild.ReqSynVoiceMode().Send();
|
|||
|
//发送一个全体静音的消息
|
|||
|
_recieveAllMuteTime = DateTime.Now;
|
|||
|
_allMuteCDTimeSpan = 30;
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region//接受
|
|||
|
|
|||
|
//接受模式改变的消息
|
|||
|
public void RespVoiceModelChanged(bool isCmderModel)
|
|||
|
{
|
|||
|
_voiceIsCmderModel = isCmderModel;
|
|||
|
//接受一个全体静音的消息
|
|||
|
_recieveAllMuteTime = DateTime.Now;
|
|||
|
_allMuteCDTimeSpan = 30;
|
|||
|
}
|
|||
|
|
|||
|
//获得集合请求调用成功的消息
|
|||
|
public void RespTogetherSuccess()
|
|||
|
{
|
|||
|
_recieveTogetherTime = DateTime.Now;
|
|||
|
_togetherCDTimeSpan = 300;
|
|||
|
}
|
|||
|
|
|||
|
//接收到集合消息
|
|||
|
public void RespTogetther()
|
|||
|
{
|
|||
|
_recieveTogetherTime = DateTime.Now;
|
|||
|
_togetherCDTimeSpan = 300;
|
|||
|
|
|||
|
GameCenter.MsgPromptSystem.ShowMsgBox(Thousandto.Cfg.Data.DeclareMessageString.Get(Thousandto.Cfg.Data.DeclareMessageString.C_GUILD_VOICE_TOGETHER_MSG_TEXT), Thousandto.Cfg.Data.DeclareMessageString.Get(Thousandto.Cfg.Data.DeclareMessageString.C_MSSAGEBOX_CANCEL), Thousandto.Cfg.Data.DeclareMessageString.Get(Thousandto.Cfg.Data.DeclareMessageString.C_MSSAGEBOX_OK), x =>
|
|||
|
{
|
|||
|
if (x == MsgBoxResultCode.Button2)
|
|||
|
{
|
|||
|
GameCenter.RealTimeVoiceSystem.ReqChangeChannel(VoiceChannel.Guild);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
#endregion
|
|||
|
#endregion
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public interface IGuildVoiceSetting
|
|||
|
{
|
|||
|
|
|||
|
//语音模式
|
|||
|
bool VoiceModel { get; set; }
|
|||
|
//Mc状态
|
|||
|
bool McIsMute { get; set; }
|
|||
|
//Mc权限
|
|||
|
bool McPermisson { get; set; }
|
|||
|
|
|||
|
//召集的CD文本
|
|||
|
string TogetherCDText { get; }
|
|||
|
//全部静音的CD文本
|
|||
|
string AllMuteCDText { get; }
|
|||
|
|
|||
|
//是否可以点击召集
|
|||
|
bool EnableCallTogether { get; }
|
|||
|
|
|||
|
//是否可以点击全体静音
|
|||
|
bool EnableAllMute { get; }
|
|||
|
|
|||
|
//是否可以改变帮会及时语音模式
|
|||
|
bool EnableChangeVoiceModel { get; }
|
|||
|
|
|||
|
//是否可以上麦
|
|||
|
bool EnableChangeMcPermisson { get; }
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//方法:
|
|||
|
//请求集合
|
|||
|
void ReqCallTogether();
|
|||
|
//全体静音的消息
|
|||
|
void ReqSetAllUserMute();
|
|||
|
}
|
|||
|
|
|||
|
}
|