Files
back_cantanBuilding/Assets/Scripts/Services/ClubService.cs
2026-05-26 16:15:54 +08:00

906 lines
37 KiB
C#

using asap.core;
using cfg;
using GameCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using UnityEngine;
namespace game
{
public class ClubStateChangeEvent
{
public int state;
public bool joinClub;
}
public class ClubSttingUpdateEvent
{
}
public class GetClubPlayInfoEvent
{
public string id;
public string name;
public string avatarUrl;
}
public class LureDonateData
{
public DateTime DonateCountTime { get; set; }
public int ClubLureDonateCount { get; set; }//时间加次数
public DateTime ClubLureRequestCDEnd { get; set; }
}
public class ClubService //: IClubService
{
[Inject]
public IUserService userService { get; set; }
[Inject]
public ICustomServerMgr customServerMgr { get; set; }
[Inject]
public IChatService chatService { get; set; }
public bool IsOpenClubJoined = false;
public bool IsOpenClubRed = true;
public int socialTipforUnlocked;
public ClubInfo myClubInfo { get; private set; }
//public bool isAdm { get; private set; }
public EMemberRole memberRole { get; private set; } = EMemberRole.Member;
public DateTime? signTime { get; private set; }
LureDonateData lureDonateData;
public int ClubLureDonateCount => lureDonateData.ClubLureDonateCount;
public DateTime ClubLureRequestCDEnd => lureDonateData.ClubLureRequestCDEnd;
public Dictionary<long, string> internalIdToPlayerId = new Dictionary<long, string>();
public ClubItemData ClubItemData;
public List<SocialInfoItemData> clubPlayerInfos { get; private set; }
public List<EventPopupData> eventPopupDatas { get; private set; } = new List<EventPopupData>();
public EventPopupData eventPopupDataClub { get; private set; }
public int OpenPanelType = 0;
public async void OpenFishingSocialPanel(int type)
{
OpenPanelType = type;
await UIManager.Instance.ShowUI(UITypes.FishingSocialPanel);
OpenPanelType = 0;
}
public bool CanAccepted
{
get
{
return memberRole == EMemberRole.Owner
|| memberRole == EMemberRole.Vice
|| memberRole == EMemberRole.Elder;
}
}
public bool ApplyState { get; private set; }
public bool CanSetting
{
get
{
return memberRole == EMemberRole.Owner || memberRole == EMemberRole.Vice;
}
}
public void Init()
{
if (lureDonateData == null)
{
lureDonateData = new LureDonateData();
lureDonateData.DonateCountTime = ZZTimeHelper.UtcNow().UtcNowOffset();
lureDonateData.ClubLureDonateCount = 0;
lureDonateData.ClubLureRequestCDEnd = ZZTimeHelper.UtcNow().UtcNowOffset();
}
if (IsOpenClubJoined)
{
SetClubRed();
}
}
void SetClubRed()
{
if (myClubInfo == null)
{
RedPointManager.Instance.SetRedPointState(RedPointName.Home_Club, IsOpenClubRed);
}
else
{
var timer = ZZTimeHelper.UtcNow().UtcNowOffset();
bool isSign = signTime?.DayOfYear != timer.DayOfYear;
bool isCanLure = lureDonateData != null && lureDonateData.ClubLureRequestCDEnd <= timer;
RedPointManager.Instance.SetRedPointState(RedPointName.Home_Club, isCanLure || isSign);
}
}
public void SetLureDonateData(string value)
{
lureDonateData = Newtonsoft.Json.JsonConvert.DeserializeObject<LureDonateData>(value);
}
void SaveLureDonateData()
{
PlayFabMgr.Instance.UpdateUserDataValue("LureDonateData", Newtonsoft.Json.JsonConvert.SerializeObject(lureDonateData));
}
//刷新体力求助次数
public void RefreshLureDonate()
{
if (lureDonateData.DonateCountTime.Date != ZZTimeHelper.UtcNow().UtcNowOffset().Date)
{
lureDonateData.DonateCountTime = ZZTimeHelper.UtcNow().UtcNowOffset();
lureDonateData.ClubLureDonateCount = 0;
SaveLureDonateData();
}
}
public void SetOpenClubRed()
{
if (IsOpenClubRed)
{
IsOpenClubRed = false;
SetClubRed();
PlayFabMgr.Instance.UpdateUserDataValue("IsOpenClubRed", "1");
}
}
public bool IsClubJoined()
{
return myClubInfo != null;
}
public void SetClubSignin(string value)
{
if (string.IsNullOrEmpty(value))
{
signTime = null;
}
else
{
signTime = DateTime.Parse(value);
}
}
public async void GetSelfClub()
{
GetSelfClubRequest getSelfClubRequest = new GetSelfClubRequest()
{
playerId = userService.UserId,
};
string json = await customServerMgr.ClubRequest("GetSelfClub", getSelfClubRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
GetSelfClubResp getSelfClubResp = Newtonsoft.Json.JsonConvert.DeserializeObject<GetSelfClubResp>(json);
myClubInfo = getSelfClubResp.clubInfo;
if (myClubInfo != null)
{
memberRole = getSelfClubResp.role;
//signTime = getSelfClubResp.signTime;
internalIdToPlayerId = getSelfClubResp.playerIDs;
SetClubPlayerProfile(getSelfClubResp.clubPlayerProfiles);
chatService.GetConversationList((long)myClubInfo.id);
}
}
else
{
memberRole = EMemberRole.Member;
myClubInfo = null;
}
SetClubRed();
MyClubInfoChange();
}
void MyClubInfoChange(bool joinClub = false)
{
GContext.Publish(new ClubStateChangeEvent() { state = 0, joinClub = joinClub });
}
public async Task<int> GetOnlineUsers()
{
HashSet<long> longs = await chatService.GetOnlineUsers(internalIdToPlayerId.Keys.ToList());
return longs == null ? 0 : longs.Count;
}
public async Task<List<ClubInfo>> GetClubs(string clubName)
{
GetClubsRequest getClubsRequest = new GetClubsRequest()
{
clubName = clubName,
};
string json = await customServerMgr.ClubRequest("GetClubs", getClubsRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
GetClubsResp clubDatas = Newtonsoft.Json.JsonConvert.DeserializeObject<GetClubsResp>(json);
return clubDatas.clubInfo;
}
else
{
return null;
}
}
public async Task<List<SocialInfoItemData>> GetClubDetails(ulong clubID, bool applyState = false)
{
ApplyState = false;
GetClubDetailsRequest getClubDetailsRequest = new GetClubDetailsRequest()
{
id = clubID,
playerId = userService.UserId,
applyState = applyState,
};
string json = await customServerMgr.ClubRequest("GetClubDetails", getClubDetailsRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
GetClubDetailsResp clubDetails = Newtonsoft.Json.JsonConvert.DeserializeObject<GetClubDetailsResp>(json);
if (clubDetails.playerIDs == null)
{
return null;
}
List<SocialInfoItemData> clubPlayerInfos = new List<SocialInfoItemData>();
if (myClubInfo != null && clubID == myClubInfo.id)
{
internalIdToPlayerId = clubDetails.playerIDs;
//internalIds = clubDetails.internalIds;
}
List<long> longs1 = clubDetails.playerIDs.Keys.ToList();
HashSet<long> longs = await chatService.GetOnlineUsers(longs1);
List<ClubPlayerProfile> clubPlayerProfiles = clubDetails.clubPlayerProfiles;
SetClubPlayerProfile(clubPlayerProfiles);
for (int i = 0; i < clubPlayerProfiles.Count; i++)
{
ClubPlayerProfile clubPlayerProfile = clubPlayerProfiles[i];
SocialInfoItemData clubPlayerInfo = new SocialInfoItemData();
clubPlayerInfo.playFabId = clubPlayerProfile.playerId;
userService.GetPlayInfo(clubPlayerInfo.playFabId);
clubPlayerInfo.lv = userService.GetPlayerLv(clubPlayerInfo.playFabId);
//clubPlayerInfo.rank = i + 1;
clubPlayerInfo.isOnline = longs.Contains(clubPlayerProfile.internalId);
clubPlayerInfo.role = clubPlayerProfile.role;
if (clubPlayerProfile.lastLoginTime != null)
{
clubPlayerInfo.lastLoginTime = (DateTime)clubPlayerProfile.lastLoginTime;
}
clubPlayerInfos.Add(clubPlayerInfo);
}
clubPlayerInfos.Sort((x, y) =>
{
//if (y.isOnline != x.isOnline)
//{
// return y.isOnline.CompareTo(x.isOnline);
//}
//else
{
return y.lv.CompareTo(x.lv);
}
});
ApplyState = clubDetails.applyState;
return clubPlayerInfos;
}
return null;
}
public async Task<ClubInfo> CreateClub(ClubSettingData clubSettingData)
{
CreateClubRequest createClubRequest = new CreateClubRequest()
{
playerId = userService.UserId,
//entityKey = userService.entityKey.Id,
clubSettingData = clubSettingData,
};
string json = await customServerMgr.ClubRequest("CreateClub", createClubRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
CreateClubResp createClubResp = Newtonsoft.Json.JsonConvert.DeserializeObject<CreateClubResp>(json);
if (createClubResp.code != 2)
{
if (createClubResp.code == 0)
{
memberRole = EMemberRole.Owner;
ShowPromote();
}
myClubInfo = createClubResp.clubInfo;
chatService.GetConversationList((long)myClubInfo.id);
internalIdToPlayerId[userService.InternalId] = userService.UserId;
MyClubInfoChange(true);
return myClubInfo;
}
}
else
{
myClubInfo = null;
}
MyClubInfoChange();
return myClubInfo;
}
public async void ShowPromote()
{
GameObject go = await UIManager.Instance.ShowUI(UITypes.ClubPromoteNoticePopupPanel);
var ClubPromoteNoticePopupPanel = go.GetComponent<ClubPromoteNoticePopupPanel>();
ClubPromoteNoticePopupPanel.SetRole(memberRole);
}
public async Task<bool> UpdateClub(ClubSettingData clubSettingData)
{
UpdateClubRequest updateClubRequest = new UpdateClubRequest()
{
id = myClubInfo.id,
clubSettingData = clubSettingData,
};
string json = await customServerMgr.ClubRequest("UpdateClub", updateClubRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
UpdateClubResp createClubResp = Newtonsoft.Json.JsonConvert.DeserializeObject<UpdateClubResp>(json);
if (createClubResp.code == 0)
{
myClubInfo.clubSettingData = clubSettingData;
GContext.Publish(new ClubSttingUpdateEvent());
return true;
}
}
return false;
}
public async Task<bool> ApplyClub(ulong clubID)
{
memberRole = EMemberRole.Member;
ApplyClubRequest applyClubRequest = new ApplyClubRequest()
{
playerId = userService.UserId,
//entityKey = userService.entityKey.Id,
id = clubID,
};
string json = await customServerMgr.ClubRequest("ApplyClub", applyClubRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
ApplyClubResp applyClubResp = Newtonsoft.Json.JsonConvert.DeserializeObject<ApplyClubResp>(json);
if (applyClubResp.code == 0)
{
ToastPanel.Show(LocalizationMgr.GetText("UI_ToastPanel_41"));
myClubInfo = applyClubResp.clubInfo;
internalIdToPlayerId = applyClubResp.playerIDs;
SetClubPlayerProfile(applyClubResp.clubPlayerProfiles);
//internalIds = applyClubResp.internalIds;
chatService.GetConversationList((long)myClubInfo.id);
MyClubInfoChange(true);
return true;
}
else if (applyClubResp.code == 1)
{
ToastPanel.Show(LocalizationMgr.GetText("UI_ToastPanel_44"));
}
else
{
ToastPanel.Show(LocalizationMgr.GetText("UI_ToastPanel_45"));
}
}
return false;
}
public async void HandleApply(bool isAgree, string applyId)
{
if (isAgree && myClubInfo.curMembers >= myClubInfo.maxMembers)
{
//人数已满
return;
}
HandleApplyRequest handleApplyRequest = new HandleApplyRequest()
{
playerId = applyId,
//entityKey = entityID,
isAgree = isAgree,
id = myClubInfo.id,
};
if (applyId == "")
{
clubPlayerInfos.Clear();
RedPointManager.Instance.SetRedPointState(RedPointName.ApplyList, false);
}
else
{
for (int i = 0; i < clubPlayerInfos.Count; i++)
{
if (clubPlayerInfos[i].playFabId == applyId)
{
clubPlayerInfos.RemoveAt(i);
RedPointManager.Instance.SetRedPointState(RedPointName.ApplyList, clubPlayerInfos.Count > 0
&& CanAccepted);
break;
}
}
}
string json = await customServerMgr.ClubRequest("HandleApply", handleApplyRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
HandleApplyResp handleApplyResp = Newtonsoft.Json.JsonConvert.DeserializeObject<HandleApplyResp>(json);
if (handleApplyResp.code == 0)
{
myClubInfo.curMembers++;
GContext.Publish(new ClubSttingUpdateEvent());
}
}
}
public async void GetApplyList()
{
clubPlayerInfos = new List<SocialInfoItemData>();
RedPointManager.Instance.SetRedPointState(RedPointName.ApplyList, false);
GetApplyListRequest getApplyListRequest = new GetApplyListRequest()
{
playerId = userService.UserId,
id = myClubInfo.id,
};
string json = await customServerMgr.ClubRequest("GetApplyList", getApplyListRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
GetApplyListResp getApplyListResp = Newtonsoft.Json.JsonConvert.DeserializeObject<GetApplyListResp>(json);
SetClubPlayerProfile(getApplyListResp.clubPlayerProfiles);
for (int i = 0; i < getApplyListResp.userIDList.Count; i++)
{
SocialInfoItemData clubPlayerInfo = new SocialInfoItemData();
//clubPlayerInfo.rank = i + 1;
//clubPlayerInfo.entityKey = getApplyListResp.entityKeys[i];
clubPlayerInfo.playFabId = getApplyListResp.userIDList[i];
userService.GetPlayInfo(clubPlayerInfo.playFabId);
clubPlayerInfo.lv = userService.GetPlayerLv(clubPlayerInfo.playFabId);
clubPlayerInfos.Add(clubPlayerInfo);
}
clubPlayerInfos.Sort((x, y) => y.lv.CompareTo(x.lv));
RedPointManager.Instance.SetRedPointState(RedPointName.ApplyList, clubPlayerInfos.Count > 0 && CanAccepted);
}
}
void SetClubPlayerProfile(List<ClubPlayerProfile> clubPlayerProfiles)
{
if (clubPlayerProfiles == null)
{
return;
}
foreach (var item in clubPlayerProfiles)
{
if (!string.IsNullOrEmpty(item.displayName) || !string.IsNullOrEmpty(item.avatar))
{
userService.SetPlayInfo(item.playerId, item.displayName, item.avatar);
userService.SetPlayerLv(item.playerId, item.level);
}
}
}
public async void QuitClub(string appointId = "0")
{
QuitClubRequest quitClubRequest = new QuitClubRequest()
{
playerId = userService.UserId,
appointId = appointId,
};
string json = await customServerMgr.ClubRequest("QuitClub", quitClubRequest);
//if (!string.IsNullOrEmpty(json) && json != "[]")
//{
// QuitClubResp quitClubResp = Newtonsoft.Json.JsonConvert.DeserializeObject<QuitClubResp>(json);
//}
chatService.OnQuit();
myClubInfo = null;
ClearLikeCursorIds();
ToastPanel.Show(LocalizationMgr.GetText("UI_ToastPanel_46"));
MyClubInfoChange();
}
public async void Demote(string playerId)
{
DemoteClubRequest demoteClubRequest = new DemoteClubRequest()
{
culbId = myClubInfo.id,
demoteId = playerId,
playerId = userService.UserId,
};
string json = await customServerMgr.ClubRequest("DemoteClub", demoteClubRequest);
}
public async void Promote(string playerId, EMemberRole role)
{
PromoteClubRequest promoteClubRequest = new PromoteClubRequest()
{
culbId = myClubInfo.id,
promoteId = playerId,
playerId = userService.UserId,
role = role,
};
string json = await customServerMgr.ClubRequest("PromoteClub", promoteClubRequest);
}
public async void Kickout(string playerId)
{
KickoutClubRequest kickoutClubRequest = new KickoutClubRequest()
{
culbId = myClubInfo.id,
kickoutId = playerId,
playerId = userService.UserId,
};
myClubInfo.curMembers--;
GContext.Publish(new ClubSttingUpdateEvent());
string json = await customServerMgr.ClubRequest("KickoutClub", kickoutClubRequest);
//if (!string.IsNullOrEmpty(json) && json != "[]")
//{
// KickoutClubResp quitClubResp = Newtonsoft.Json.JsonConvert.DeserializeObject<KickoutClubResp>(json);
//}
}
public async void ReadClubEvent()
{
ReadClubEventRequest readClubEventRequest = new ReadClubEventRequest()
{
playerId = userService.UserId,
};
string json = await customServerMgr.ClubRequest("ReadClubEvent", readClubEventRequest);
//if (!string.IsNullOrEmpty(json) && json != "[]")
//{
// ReadClubEventResp readClubEventResp = Newtonsoft.Json.JsonConvert.DeserializeObject<ReadClubEventResp>(json);
//}
}
public async void ClubSingin()
{
signTime = ZZTimeHelper.UtcNow().UtcNowOffset();
ClubSinginRequest clubSinginRequest = new ClubSinginRequest()
{
playerId = userService.UserId,
id = myClubInfo.id,
};
string json = await customServerMgr.ClubRequest("ClubSingin", clubSinginRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
ClubSinginResp clubSinginResp = Newtonsoft.Json.JsonConvert.DeserializeObject<ClubSinginResp>(json);
signTime = ZZTimeHelper.UtcNow().UtcNowOffset();
PlayFabMgr.Instance.UpdateUserDataValue("ClubSignin", signTime.Value.ToString("yyyy-MM-dd HH:mm:ss"));
if (clubSinginResp.code == 0)
{
chatService.SendSystemMessage($"{MessageChatType.SI}_{userService.UserId}");
//签到成功奖励
GContext.container.Resolve<PlayerItemData>().AddItemByDrop(GContext.container.Resolve<cfg.Tables>().TbGlobalConfig.ClubSignReward);
GContext.Publish(new ShowData());
#if AGG
using (var e = GEvent.GameEvent("guild_sign"))
{
e.AddContent("guild_id", myClubInfo.id)
.AddContent("drop_list", GContext.container.Resolve<cfg.Tables>().TbGlobalConfig.ClubSignReward);
}
#endif
}
}
SetClubRed();
}
public async Task<bool> SendGetPhoto(int pictureID)
{
if (GContext.container.Resolve<AlbumData>().GetPhotoRequestCountByDay(pictureID) > 0)
{
ToastPanel.Show(LocalizationMgr.GetText("UI_ToastPanel_43"));
return false;
}
//messageID
long messageID = await chatService.SendGetPhotoMessage(pictureID.ToString());
if (messageID > 0)
{
//记录今日请求pictureID
GContext.container.Resolve<AlbumData>().SetPhotoRequestCountByDay(pictureID);
return true;
}
return false;
}
public void SendSystemMessage2(int index)
{
chatService.SendSystemMessage2($"{userService.UserId}_{index}");
}
public async Task<string> SendDonatePhoto(string playerId, long cursorId, int pictureID)
{
ClubDonateRequest clubDonateRequest = new ClubDonateRequest()
{
donateId = userService.UserId,
cursorId = cursorId,
playerId = playerId,
pictureID = pictureID,
id = myClubInfo.id,
};
string json = await customServerMgr.ClubRequest("DonatePhoto", clubDonateRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
ClubDonateResp clubDonateResp = Newtonsoft.Json.JsonConvert.DeserializeObject<ClubDonateResp>(json);
if (clubDonateResp.code == 0)
{
//减去一个照片
GContext.container.Resolve<AlbumData>().RemovePictureProgress(pictureID, 1);
int gold = GContext.container.Resolve<cfg.Tables>().TbGlobalConfig.ClubDonationCashReward;
GContext.container.Resolve<PlayerData>().AddGold((ulong)gold);
GContext.Publish(new ShowData(new ItemData() { count = gold, id = 1002 }));
GContext.Publish(new ShowData());
return clubDonateResp.donateId;
}
else
{
return clubDonateResp.donateId;
}
}
return "";
}
public async Task<string> GetPhotoState(string playerId, long cursorId)
{
GetDonateStatusRequest DonateStatusRequest = new GetDonateStatusRequest()
{
//playerId = playerId,
cursorId = cursorId,
id = myClubInfo.id,
};
string json = await customServerMgr.ClubRequest("GetDonateStatus", DonateStatusRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
GetDonateStatusResp clubSinginResp = Newtonsoft.Json.JsonConvert.DeserializeObject<GetDonateStatusResp>(json);
return clubSinginResp.donateId;
}
return "";
}
/// <summary>
/// 获取被赠送的照片 以及其他事件
/// </summary>
///
int energyAddCount = 0;
public int GetEnergyAddCount()
{
int count = energyAddCount;
energyAddCount = 0;
return count;
}
public async void GetServiceEvent()
{
energyAddCount = 0;
GetPictureRequest getPictureRequest = new GetPictureRequest()
{
playerId = userService.UserId,
};
string json = await customServerMgr.ClubRequest("GetPictureList", getPictureRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
GetPictureResp getPictureResp = Newtonsoft.Json.JsonConvert.DeserializeObject<GetPictureResp>(json);
//var pictureDatas = getPictureResp.pictureDataList;
//if (pictureDatas != null && pictureDatas.Count > 0)
//{
// List<int> pictureIDs = new List<int>();
// foreach (var pictureData in pictureDatas)
// {
// pictureIDs.Add(pictureData.pictureID);
// }
// GContext.container.Resolve<AlbumData>().AddPictureProgress(pictureIDs);
//}
eventPopupDatas = getPictureResp.eventPopupDatas;
if (eventPopupDatas != null && eventPopupDatas.Count > 0)
{
IReportService reportService = GContext.container.Resolve<IReportService>();
var playerData = GContext.container.Resolve<PlayerData>();
var tables = GContext.container.Resolve<Tables>();
//CampData campData = GContext.container.Resolve<CampData>();
foreach (var eventPopupData in eventPopupDatas)
{
if (eventPopupData.type == ReportDataType.Heist)
{
long content = long.Parse(eventPopupData.content);
if (content < 0)
{
content = -content;
}
//=====新规则=====
long newContent = content / 100;
long rangeT = content % 100;
float range = Mathf.Clamp(rangeT, 5, 15) * 0.1f;
int m = Mathf.Min(tables.TbGlobalConfig.BottleCashParamLimit, (int)newContent);
float mg = (1 + playerData.benefitsCashMag) * (1 + playerData.benefitsCashMagLimited);
m = Mathf.RoundToInt(m * mg * range);
//=====新规则=====
eventPopupData.content = m.ToString();
}
if (eventPopupData.IsRead == false)
{
if (eventPopupData.type == ReportDataType.Energy)
{
#if AGG
using (var e = GEvent.GameEvent("guild_request_lures_reward"))
{
e.AddContent("donate_userid_list", eventPopupData.content)
.AddContent("reward_hook", GContext.container.Resolve<cfg.Tables>().TbGlobalConfig.ClubLureDonateReward);
if (myClubInfo != null)
{
e.AddContent("guild_id", myClubInfo.id);
}
}
#endif
//事件弹窗
//添加体力
playerData.SetEnergy(playerData.Energy + GContext.container.Resolve<cfg.Tables>().TbGlobalConfig.ClubLureDonateReward);
energyAddCount++;
}
else if (eventPopupData.type == ReportDataType.Club)
{
//工会事件,只在工会界面调用,弹窗展示之后才设置为已读
eventPopupDataClub = eventPopupData;
}
else if (eventPopupData.type == ReportDataType.Aquarium)
{
reportService.AddReport(new ReportData()
{
type = eventPopupData.type,
id = eventPopupData.redirectID,
playFabId = eventPopupData.playerID,
content = eventPopupData.content,
});
}
else
{
//可能扣钱
if (eventPopupData.type == ReportDataType.Heist && playerData.gold > 0)
{
int content = int.Parse(eventPopupData.content);
reportService.AddReport(new ReportData()
{
type = eventPopupData.type,
id = eventPopupData.redirectID,
playFabId = eventPopupData.playerID,
content = eventPopupData.content,
});
ulong gold = (ulong)content;
if (gold >= playerData.gold)
{
playerData.SetGold(0);
}
else
{
playerData.SetGold(playerData.gold - gold);
}
}
else if (eventPopupData.type == ReportDataType.Bomb)
{
reportService.AddReport(new ReportData()
{
type = eventPopupData.type,
id = eventPopupData.redirectID,
playFabId = eventPopupData.playerID,
content = eventPopupData.content,
});
GContext.container.Resolve<CampDataMM>().SetIsFix(true);
}
}
}
}
if (energyAddCount > 0)
{
GContext.container.Resolve<IFaceUIService>().AddFaceCustomUIData(UITypes.EventReportPopupPanel, true);
}
CurRewardQCount curRewardQCount = new CurRewardQCount();
GContext.Publish(curRewardQCount);
int faceCount = GContext.container.Resolve<IFaceUIService>().GetFaceUICount();
if (curRewardQCount.count <= 0 && faceCount <= 0)
{
ShowHomeReport();
}
}
}
}
public void ShowHomeReport()
{
ReportData reportData = GContext.container.Resolve<IReportService>().GetReportData();
if (reportData != null)
{
GContext.Publish(reportData);
}
}
//消息点赞相关
List<long> LikeCursorIds;
string LikeCursorIdsKey = "LikeCursorIds";
void ClearLikeCursorIds()
{
LikeCursorIds = null;
PlayerPrefs.DeleteKey(LikeCursorIdsKey);
}
public async void SendLike(long cursorId)
{
ClubLikeRequest clubLikeRequest = new ClubLikeRequest()
{
cursorId = cursorId,
id = myClubInfo.id,
};
string json = await customServerMgr.ClubRequest("ClubLike", clubLikeRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
ClubLikeResp clubSinginResp = Newtonsoft.Json.JsonConvert.DeserializeObject<ClubLikeResp>(json);
LikeCursorIds.Add(cursorId);
PlayerPrefs.SetString(LikeCursorIdsKey, Newtonsoft.Json.JsonConvert.SerializeObject(LikeCursorIds));
}
}
public async Task<(bool, int)> GetLikeCount(long cursorId)
{
GetLikeCountRequest LikeCountRequest = new GetLikeCountRequest()
{
cursorId = cursorId,
id = myClubInfo.id,
};
LikeCursorIds = Newtonsoft.Json.JsonConvert.DeserializeObject<List<long>>(PlayerPrefs.GetString(LikeCursorIdsKey, "[]"));
bool isLike = LikeCursorIds.Contains(cursorId);
int count = 0;
if (isLike)
{
count = 1;
}
string json = await customServerMgr.ClubRequest("GetLikeCount", LikeCountRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
GetLikeCountResp clubSinginResp = Newtonsoft.Json.JsonConvert.DeserializeObject<GetLikeCountResp>(json);
count = clubSinginResp.count;
}
return (isLike, count);
}
//体力求助相关
//聊天消息
public async Task<bool> SendHelpEnergy()
{
//messageID
long messageID = await chatService.SendHelpEnergyMessage(1001);
if (messageID > 0)
{
#if AGG
using (var e = GEvent.GameEvent("guild_request_lures"))
{
e.AddContent("guild_id", myClubInfo.id);
}
#endif
//记录今日请求 体力互助
lureDonateData.ClubLureRequestCDEnd = ZZTimeHelper.UtcNow().UtcNowOffset().
AddHours(GContext.container.Resolve<cfg.Tables>().TbGlobalConfig.ClubLureRequestCd);
SaveLureDonateData();
SetClubRed();
return true;
}
return false;
}
//服务器消息状态
public async Task<string> SendHelpOthersEnergy(string playerId, long cursorId)
{
ClubHelpEnergyRequest clubHelpEnergyRequest = new ClubHelpEnergyRequest()
{
donateId = userService.UserId,
cursorId = cursorId,
playerId = playerId,
id = myClubInfo.id,
};
lureDonateData.ClubLureDonateCount++;
string json = await customServerMgr.ClubRequest("ClubHelpEnergy", clubHelpEnergyRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
#if AGG
using (var e = GEvent.GameEvent("guild_donate_lures"))
{
e.AddContent("guild_id", myClubInfo.id)
.AddContent("to_user_id", playerId)
;
}
#endif
ClubHelpEnergyResp clubHelpEnergyResp = Newtonsoft.Json.JsonConvert.DeserializeObject<ClubHelpEnergyResp>(json);
SaveLureDonateData();
return clubHelpEnergyResp.idContent;
}
else
{
lureDonateData.ClubLureDonateCount--;
}
return "";
}
public async Task<string> GetHelpEnergyState(long cursorId)
{
GetHelpEnergyStatusRequest helpEnergyRequest = new GetHelpEnergyStatusRequest()
{
cursorId = cursorId,
id = myClubInfo.id,
};
string json = await customServerMgr.ClubRequest("GetHelpEnergyStatus", helpEnergyRequest);
if (!string.IsNullOrEmpty(json) && json != "[]")
{
GetHelpEnergyStatusResp helpEnergyResp = Newtonsoft.Json.JsonConvert.DeserializeObject<GetHelpEnergyStatusResp>(json);
return helpEnergyResp.idContent;
}
return "";
}
}
}