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();
|
||
}
|
||
|
||
}
|