608 lines
17 KiB
C#
Raw Permalink Normal View History

2025-05-18 01:04:31 +08:00
// ***********************************************************************
// Assembly : Unity
// Author : Kimch
// Created : 2018-2-8
// Description : 帮会数据代理
// Last Modified By : Kimch
// Last Modified On :
// ***********************************************************************
// <copyright file= "GuildProxy" company=""></copyright>
// <summary></summary>
// ***********************************************************************
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace G
{
/// <summary>
///
/// </summary>
public class GuildProxy : F.GameProxy
{
//玩家的帮会相关标记位,做到申请过一次之后可以保存结果一段时间,减少网络流量
private bool _bNeedRequestGuildInfo = true; //是否需要请求个人帮会信息
public bool needRequestGuildInfo
{
get { return _bNeedRequestGuildInfo; }
set { _bNeedRequestGuildInfo = value; }
}
private bool _bNeedRequestGuildList = true; //是否需要请求全服帮会列表
public bool needRequestGuildList
{
get { return _bNeedRequestGuildList; }
set { _bNeedRequestGuildList = value; }
}
private bool _bShowGuildNewReserveFlag = false; //是否显示新审批成员标志
public bool showGuildNewReserveFlag
{
get { return _bShowGuildNewReserveFlag; }
set { _bShowGuildNewReserveFlag = value; }
}
//更新帮会相关标记位
private const int c_GuildRequestCoolDown = 30; //帮会信息更新间隔,包括帮会列表和帮会信息
private long _cacheChangeMasterGuid = GlobalDefine.INVALID_GUID; //缓存待禅让目标会员Guid
private long _cacheKickMemberGuid = GlobalDefine.INVALID_GUID; //缓存待踢出目标会员Guid
//申请全服帮会列表
public void ReqGuildList()
{
//if (null != GameManager.gameManager.PlayerDataPool.guildList)
//{
// GameManager.gameManager.PlayerDataPool.guildList.CleanUp();
//}
//CG_GUILD_REQ_LIST msg = (CG_GUILD_REQ_LIST)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_REQ_LIST);
//msg.Requester = GUID;
//msg.SendPacket();
_bNeedRequestGuildList = false;
StartCoroutine(ResetGuildListTime());
}
IEnumerator ResetGuildListTime()
{
yield return new WaitForSeconds(c_GuildRequestCoolDown);
_bNeedRequestGuildList = true;
}
//申请帮会信息
public void ReqGuildInfo()
{
//if (null != GameManager.gameManager.PlayerDataPool.GuildInfo)
//{
// GameManager.gameManager.PlayerDataPool.GuildInfo.CleanUp();
//}
//CG_GUILD_REQ_INFO msg = (CG_GUILD_REQ_INFO)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_REQ_INFO);
//msg.Requester = GUID;
//msg.SendPacket();
_bNeedRequestGuildInfo = false;
StartCoroutine(ResetGuildInfoTime());
}
IEnumerator ResetGuildInfoTime()
{
yield return new WaitForSeconds(c_GuildRequestCoolDown);
_bNeedRequestGuildInfo = true;
}
//申请创建帮会
public void ReqCreateGuild(string guildName, string guildDeclaration)
{
//检测名字长度
//if (guildName.Length <= 0 || Encoding.UTF8.GetBytes(guildName).Length > GlobalDefine.MAX_GUILD_NAME)
//{
// GUIData.AddNotifyData("#{1761}"); //请输入帮会名称
// return;
//}
//if (Encoding.UTF8.GetBytes(guildDeclaration).Length > GlobalDefine.MAX_GUILD_DECLARATION)
//{
// return;
//}
//玩家等级判断
//if (BaseAttr.Level < GlobalDefine.CREATE_GUILD_LEVEL)
//{
// GUIData.AddNotifyData("#{1771}"); //你的人物等级不足40级无法创建帮会
// return;
//}
//有帮会无法申请
//if (GameManager.gameManager.PlayerDataPool.GuildInfo.GuildGuid != GlobalDefine.INVALID_GUID)
//{
// GUIData.AddNotifyData("#{1772}"); //你已属于一个帮会,不能创建帮会
// return;
//}
//CG_GUILD_CREATE msg = (CG_GUILD_CREATE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_CREATE);
//msg.GuildName = guildName;
//if (guildDeclaration != "")
//{
// msg.GuildDeclaration = guildDeclaration;
//}
//msg.SendPacket();
}
//申请加入他人所在的帮会
public void ReqJoinOtherPlayerGuild(long PlayerGuid, string strPlayerName)
{
//玩家Guid判断
if (PlayerGuid == GlobalDefine.INVALID_GUID)
{
return;
}
//玩家等级判断
//if (BaseAttr.Level < GlobalDefine.JOIN_GUILD_LEVEL)
//{
// Singleton<ObjManager>.GetInstance().MainPlayer.SendNoticMsg(false, "#{1780}"); //你的人物等级不足20级无法加入帮会
// return;
//}
//CG_GUILD_JOIN_OTHERPLAYER msg = (CG_GUILD_JOIN_OTHERPLAYER)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_JOIN_OTHERPLAYER);
//if (msg != null)
//{
// msg.UserGuid = PlayerGuid;
// msg.UserName = strPlayerName;
// msg.SendPacket();
//}
//SendNoticMsg(false, "#{2340}");
}
//申请加入帮会
public void ReqJoinGuild(long guildGuid)
{
//帮会Guid判断
if (guildGuid == GlobalDefine.INVALID_GUID)
{
return;
}
//if (GameManager.gameManager.PlayerDataPool.GuildInfo.PreserveGuildGuid.Count >= GlobalDefine.GUILD_PLAYERRESERVE_MAX)
//{
// return;
//}
//玩家等级判断
//if (BaseAttr.Level < GlobalDefine.JOIN_GUILD_LEVEL)
//{
// Singleton<ObjManager>.GetInstance().MainPlayer.SendNoticMsg(false, "#{1780}"); //你的人物等级不足20级无法创建帮会
// return;
//}
//CG_GUILD_JOIN msg = (CG_GUILD_JOIN)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_JOIN);
//msg.GuildGuid = guildGuid;
//msg.SendPacket();
}
//邀请某个玩家加入帮会
public void ReqInviteGuild(long invitedGuid)
{
//被邀请者判断
if (invitedGuid == GlobalDefine.INVALID_GUID)
{
return;
}
//CG_GUILD_INVITE msg = (CG_GUILD_INVITE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_INVITE);
//msg.InvitedGuid = invitedGuid;
//msg.SendPacket();
}
//申请离开帮会
public void ReqLeavGuild()
{
//无帮会无法申请
//if (false == GameManager.gameManager.PlayerDataPool.IsHaveGuild())
//{
// return;
//}
////帮主离开为解散帮会,否则为帮众退出帮会
//if (GameManager.gameManager.PlayerDataPool.IsGuildChief())
//{
// //解散帮会操作不可撤销,确定执行吗?
// MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{2359}"), "", MsgBoxLeaveGuildOK, null);
//}
//else
//{
// //你确认要退出{0}帮会吗?
// MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{1788}", GameManager.gameManager.PlayerDataPool.GuildInfo.GuildName),
// "", MsgBoxLeaveGuildOK, null);
//}
}
//离开帮会MessageBox确认
private void MsgBoxLeaveGuildOK()
{
//无帮会无法申请
//if (false == GameManager.gameManager.PlayerDataPool.IsHaveGuild())
//{
// return;
//}
//CG_GUILD_LEAVE msg = (CG_GUILD_LEAVE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_LEAVE);
//msg.Requester = GUID;
//msg.SendPacket();
}
//任命会员职位
/*public void ReqCommisionGuildMember(long approver)
{
if (false == GameManager.gameManager.PlayerDataPool.IsHaveGuild())
{
return;
}
Guild info = GameManager.gameManager.PlayerDataPool.GuildInfo;
GuildMember mainPlayerGuildInfo = info.GetMainPlayerGuildInfo();
if (false == mainPlayerGuildInfo.IsValid())
{
return;
}
if (false == info.IsHaveAuthority(mainPlayerGuildInfo.Job, (int)GameDefine_Globe.GUILD_ROUTINE.GUILD_ROUTINE_CHANGE_JOB))
{
return;
}
if (approver == GlobalDefine.INVALID_GUID)
{
return;
}
GuildMember member;
if (GameManager.gameManager.PlayerDataPool.GuildInfo.GuildMemberList.TryGetValue(approver, out member))
{
if (member.IsValid())
{
if (member.Job == (int)Games.GlobeDefine.GameDefine_Globe.GUILD_JOB.VICE_CHIEF)
{
ReqChangeGuildMemberJob(approver, (int)Games.GlobeDefine.GameDefine_Globe.GUILD_JOB.MEMBER);
}
else if (member.Job == (int)Games.GlobeDefine.GameDefine_Globe.GUILD_JOB.MEMBER)
{
ReqChangeGuildMemberJob(approver, (int)Games.GlobeDefine.GameDefine_Globe.GUILD_JOB.VICE_CHIEF);
}
}
}
}*/
//修改会员权限
private List<long> m_approverGuid = new List<long>();
private int m_jobID = GlobalDefine.INVALID_ID;
public void ReqChangeGuildMemberJob(List<long> approver, int nJobID)
{
//无帮会无法申请
//if (GameManager.gameManager.PlayerDataPool.GuildInfo.GuildGuid == GlobalDefine.INVALID_GUID)
//{
// return;
//}
////被修改者GUID判断
//for (int i = 0; i < approver.Count; i++)
//{
// if (approver[i] == GlobalDefine.INVALID_GUID)
// {
// return;
// }
//}
////职位判断
//if (nJobID < 0 || nJobID >= (int)Games.GlobeDefine.GameDefine_Globe.GUILD_JOB.MAX)
//{
// return;
//}
//m_approverGuid.Clear();
//for (int i = 0; i < approver.Count; i++)
//{
// m_approverGuid.Add(approver[i]);
//}
//m_jobID = nJobID;
////确定对该玩家进行任命?
//MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{3220}"), "", MsgBoxChangeGuildMemberJobOK, MsgBoxChangeGuildMemberJobCancel);
}
private void MsgBoxChangeGuildMemberJobOK()
{
//被修改者GUID判断
for (int i = 0; i < m_approverGuid.Count; i++)
{
if (m_approverGuid[i] == GlobalDefine.INVALID_GUID)
{
return;
}
}
//职位判断
//if (m_jobID < 0 || m_jobID >= (int)Games.GlobeDefine.GameDefine_Globe.GUILD_JOB.MAX)
//{
// return;
//}
//CG_GUILD_JOB_CHANGE msg = (CG_GUILD_JOB_CHANGE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_JOB_CHANGE);
//for (int i = 0; i < m_approverGuid.Count; i++)
//{
// msg.AddApprover(m_approverGuid[i]);
//}
//msg.JobID = m_jobID;
//msg.SendPacket();
//m_approverGuid.Clear();
//m_jobID = GlobalDefine.INVALID_ID;
//if (GuildAuthorityWindowLogic.Instance() != null)
//{
// GuildAuthorityWindowLogic.Instance().OnSelectMemberCloseClick();
//}
}
private void MsgBoxChangeGuildMemberJobCancel()
{
m_approverGuid.Clear();
m_jobID = GlobalDefine.INVALID_ID;
}
//修改帮会公告
public void ReqChangeGuildNotice(string message)
{
//if (false == GameManager.gameManager.PlayerDataPool.IsHaveGuild())
//{
// return;
//}
//Guild info = GameManager.gameManager.PlayerDataPool.GuildInfo;
//GuildMember mainPlayerGuildInfo = info.GetMainPlayerGuildInfo();
//if (false == mainPlayerGuildInfo.IsValid())
//{
// return;
//}
//if (false == info.IsHaveAuthority(mainPlayerGuildInfo.Job, (int)GameDefine_Globe.GUILD_ROUTINE.GUILD_ROUTINE_CHANGE_NOTICE))
//{
// GUIData.AddNotifyData("#{2513}");
// return;
//}
////判断字符串的合法性
//if (message.Length <= 0)
//{
// return;
//}
//CG_GUILD_REQ_CHANGE_NOTICE msg = (CG_GUILD_REQ_CHANGE_NOTICE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_REQ_CHANGE_NOTICE);
//msg.GuildNotice = message;
//msg.SendPacket();
////为了避免实时刷新,这里暂时将帮会公告设置为修改后的。等待下次向服务器申请后即可再次被赋值
//GameManager.gameManager.PlayerDataPool.GuildInfo.GuildNotice = message;
//if (GuildWindow.Instance() != null)
//{
// GuildWindow.Instance().UpdateGuildNotice();
//}
}
public void ReqChangeGuildDeclaration(string message)
{
//if (false == GameManager.gameManager.PlayerDataPool.IsHaveGuild())
//{
// return;
//}
//Guild info = GameManager.gameManager.PlayerDataPool.GuildInfo;
//GuildMember mainPlayerGuildInfo = info.GetMainPlayerGuildInfo();
//if (false == mainPlayerGuildInfo.IsValid())
//{
// return;
//}
//if (false == info.IsHaveAuthority(mainPlayerGuildInfo.Job, (int)GameDefine_Globe.GUILD_ROUTINE.GUILD_ROUTINE_DECLARATION))
//{
// GUIData.AddNotifyData("#{2513}");
// return;
//}
////判断字符串的合法性
//if (message.Length <= 0)
//{
// return;
//}
//CG_GUILD_REQ_CHANGE_DECLARATION msg = (CG_GUILD_REQ_CHANGE_DECLARATION)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_REQ_CHANGE_DECLARATION);
//msg.GuildDeclaration = message;
//msg.SendPacket();
////为了避免实时刷新,这里暂时将帮会公告设置为修改后的。等待下次向服务器申请后即可再次被赋值
//GameManager.gameManager.PlayerDataPool.GuildInfo.GuildDeclaration = message;
//if (GuildWindow.Instance() != null)
//{
// GuildWindow.Instance().UpdateGuildDeclaration();
//}
}
//批准待审批会员
public void ReqApproveGuildMember(long approver, int agree)
{
//无帮会无法申请
//if (GameManager.gameManager.PlayerDataPool.GuildInfo.GuildGuid == GlobalDefine.INVALID_GUID)
//{
// return;
//}
//CG_GUILD_APPROVE_RESERVE msg = (CG_GUILD_APPROVE_RESERVE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_APPROVE_RESERVE);
//msg.Approver = approver;
//msg.IsAgree = agree;
//msg.SendPacket();
}
//踢出某个会员
public void ReqKickGuildMember(long kickedGuid)
{
if (kickedGuid == GlobalDefine.INVALID_GUID)
{
return;
}
//无帮会无法申请
//if (GameManager.gameManager.PlayerDataPool.GuildInfo.GuildGuid == GlobalDefine.INVALID_GUID)
//{
// return;
//}
//_cacheKickMemberGuid = kickedGuid;
////确定将该玩家从帮会中除名?
//MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{2360}"), "", MsgBoxKickGuildMmeberOK, MsgBoxKickGuildMmeberCancel);
}
//帮会踢人MessageBox确认函数
private void MsgBoxKickGuildMmeberOK()
{
if (_cacheKickMemberGuid == GlobalDefine.INVALID_GUID)
{
return;
}
////无帮会无法申请
//if (GameManager.gameManager.PlayerDataPool.GuildInfo.GuildGuid == GlobalDefine.INVALID_GUID)
//{
// return;
//}
//CG_GUILD_KICK msg = (CG_GUILD_KICK)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_KICK);
//msg.Kicked = _cacheKickMemberGuid;
//msg.SendPacket();
_cacheKickMemberGuid = GlobalDefine.INVALID_GUID;
}
//帮会踢人MessageBox取消函数
private void MsgBoxKickGuildMmeberCancel()
{
_cacheKickMemberGuid = GlobalDefine.INVALID_GUID;
}
//禅让帮主
public void ReqChangeGuildMaster(long approver)
{
//if (false == GameManager.gameManager.PlayerDataPool.IsHaveGuild())
//{
// return;
//}
//Guild info = GameManager.gameManager.PlayerDataPool.GuildInfo;
//GuildMember mainPlayerGuildInfo = info.GetMainPlayerGuildInfo();
//if (false == mainPlayerGuildInfo.IsValid())
//{
// return;
//}
//if (false == info.IsHaveAuthority(mainPlayerGuildInfo.Job, (int)GameDefine_Globe.GUILD_ROUTINE.GUILD_ROUTINE_CHANGE_JOB))
//{
// return;
//}
////禅让和修改会员权限发同样消息包只是JobID固定为GUILD_JOB.CHIEF
//if (approver == GlobalDefine.INVALID_GUID)
//{
// return;
//}
////目标等级是否达到40
//if (GameManager.gameManager.PlayerDataPool.GuildInfo.GetMemberLevel(approver) < GlobalDefine.CREATE_GUILD_LEVEL)
//{
// //禅让目标的等级不得低于40级。
// SendNoticMsg(false, "#{2362}");
// return;
//}
//_cacheChangeMasterGuid = approver;
////禅让帮主操作不可撤销,确定执行吗?
//MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{2361}"), "", MsgBoxChangeGuildMasterOK, MsgBoxChangeGuildMasterCancel);
}
//帮会禅让MessageBox确认函数
private void MsgBoxChangeGuildMasterOK()
{
//CG_GUILD_JOB_CHANGE msg = (CG_GUILD_JOB_CHANGE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_JOB_CHANGE);
//msg.AddApprover(_cacheChangeMasterGuid);
//msg.JobID = (int)Games.GlobeDefine.GameDefine_Globe.GUILD_JOB.CHIEF;
//msg.SendPacket();
_cacheChangeMasterGuid = GlobalDefine.INVALID_GUID;
}
//帮会禅让MessageBox取消函数
private void MsgBoxChangeGuildMasterCancel()
{
_cacheChangeMasterGuid = GlobalDefine.INVALID_GUID;
}
//帮会升级
public void ReqGuildLevelUp(int nLevel)
{
//无帮会无法申请
//if (GameManager.gameManager.PlayerDataPool.GuildInfo.GuildGuid == GlobalDefine.INVALID_GUID)
//{
// return;
//}
////必须是帮主
//if (GameManager.gameManager.PlayerDataPool.GuildInfo.GuildChiefGuid != GUID)
//{
// return;
//}
//CG_GUILD_REQ_LEVELUP msg = (CG_GUILD_REQ_LEVELUP)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_REQ_LEVELUP);
//msg.Level = nLevel;
//msg.SendPacket();
}
// 是否是跑商状态
public bool IsInPaoShang()
{
//if (GameManager.gameManager.MissionManager.IsMissionNotFaild(GlobalDefine.PAOSHANG_MISSIONID_H)
// || GameManager.gameManager.MissionManager.IsMissionNotFaild(GlobalDefine.PAOSHANG_MISSIONID_L))
//{
// if (PaoShangState == (int)GC_BROADCASTPSSTATE.PSSTATE.CANROB ||
// PaoShangState == (int)GC_BROADCASTPSSTATE.PSSTATE.NOTCANROB)
// {
// return true;
// }
//}
return false;
}
public bool IsPSCanAccept()
{
//Guild gGuildInfo = GameManager.gameManager.PlayerDataPool.GuildInfo;
//Tab_GuildPaoShang PSTab = TableManager.GetGuildPaoShangByID(gGuildInfo.GuildLevel, 0);
//if (PSTab != null)
//{
// int nPSCount = GameManager.gameManager.PlayerDataPool.CommonData.GetCommonData((int)Games.UserCommonData.USER_COMMONDATA.CD_PAOSHANG_GOTTEN_NUM);
// if (gGuildInfo.PSCanAcceptTimes > 0 && nPSCount < PSTab.MemMaxTimesOneDay && BaseAttr.Level >= 47) // 先写死吧
// {
// return true;
// }
//}
return false;
}
}
}