Files
ft/CodexOutput/upserver/B3BatchMigration/M2/C2d修改前快照/080-EventInviteFriends.cs.txt
Liubing\LB 6813da149a feat(upserver): 保存M2客户端KV迁移至本人统计写检查点
保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。
保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。

验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。
包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
2026-09-30 19:19:05 +08:00

157 lines
5.6 KiB
Plaintext

using asap.core;
using cfg;
using game;
using GameCore;
using System.Collections.Generic;
using TMPro;
using tysdk;
using UnityEngine;
using UnityEngine.UI;
using UnityNative.Sharing;
public class EventInviteFriends : MonoBehaviour
{
private IUnityNativeSharing adapter;
Button btn_close;
Button btn_mask;
Button btn_questionmark;
Image bar;
GameObject scale;
TMP_Text text_num;
RewardItemNew bigReward;
float rewardWidth;
RewardItemNew[] smallReward;
Button btn_invite_link;
Button btn_invite_fb;
string inviteLink;
List<Invite> invites;
int maxNum;
int maxIndex;
Tables tables;
PlayerItemData playerItemData;
FriendService friendService;
private void Awake()
{
friendService = GContext.container.Resolve<FriendService>();
playerItemData = GContext.container.Resolve<PlayerItemData>();
tables = GContext.container.Resolve<Tables>();
invites = tables.TbInvite.DataList;
maxIndex = invites.Count - 1;
maxNum = invites[maxIndex].NumInvite;
btn_close = transform.Find("btn_close").GetComponent<Button>();
btn_mask = transform.Find("mask").GetComponent<Button>();
btn_questionmark = transform.Find("root/btn_questionmark").GetComponent<Button>();
bar = transform.Find("root/bg_bar/bar").GetComponent<Image>();
scale = transform.Find("root/bg_bar/bar/scale").gameObject;
text_num = transform.Find("root/bg_done/text_num").GetComponent<TMP_Text>();
bigReward = transform.Find("root/bigreward/reward").GetComponent<RewardItemNew>();
Transform rewardRoot = transform.Find("root/reward");
rewardWidth = rewardRoot.GetComponent<RectTransform>().rect.width;
smallReward = rewardRoot.GetComponentsInChildren<RewardItemNew>();
btn_invite_link = transform.Find("root/btn_invite_link/btn_green").GetComponent<Button>();
btn_invite_fb = transform.Find("root/btn_invite_link/btn_green_fb").GetComponent<Button>();
}
private async void Start()
{
btn_close.onClick.AddListener(OnClickClose);
btn_mask.onClick.AddListener(OnClickClose);
btn_questionmark.onClick.AddListener(OnClickQuestionmark);
btn_invite_link.onClick.AddListener(OnClickInviteLink);
btn_invite_fb.onClick.AddListener(OnClickInviteFB);
btn_invite_fb.gameObject.SetActive(!ChannelManager.IsRustoreStore);
int InviteRewardCount;
try { InviteRewardCount = await friendService.OnReceiveLinkAward(); }
catch (System.Exception e) { Debug.LogException(e); return; }
if (this == null || !friendService.IsCurrent) return;
for (int i = 1; i < maxNum; i++)
{
var go = Instantiate(scale, bar.transform);
go.transform.localPosition = new Vector3((i / (float)maxNum - 0.5f) * rewardWidth, 0, 0);
}
for (int i = 0; i < maxIndex; i++)
{
if (i < smallReward.Length)
{
if (string.IsNullOrEmpty(invites[i].GiftIcon))
{
var dataItem = playerItemData.GetItemDataOne(invites[i].DropID);
if (dataItem != null)
{
smallReward[i].SetData(dataItem);
}
}
else
{
smallReward[i].SetDropIcon(invites[i].GiftIcon, invites[i].DropID);
}
smallReward[i].SetReceived(i < InviteRewardCount);
smallReward[i].transform.localPosition =
new Vector3((invites[i].NumInvite / (float)maxNum - 0.5f) * rewardWidth, 0, 0);
}
}
if (string.IsNullOrEmpty(invites[maxIndex].GiftIcon))
{
var dataItem = playerItemData.GetItemDataOne(invites[maxIndex].DropID);
if (dataItem != null)
{
bigReward.SetData(dataItem);
}
}
else
{
bigReward.SetDropIcon(invites[maxIndex].GiftIcon, invites[maxIndex].DropID);
}
bigReward.SetReceived(maxIndex < InviteRewardCount);
int InviteNumber = friendService.InviteLinkNumber;
if (InviteNumber > maxNum)
{
InviteNumber = maxNum;
}
bar.fillAmount = InviteNumber / (float)maxNum;
text_num.text = InviteNumber + "/" + maxNum;
GenInviteLink();
}
async void GenInviteLink()
{
inviteLink = "";
IUserService userService = GContext.container.Resolve<IUserService>();
var link = await AFHelper.Instance.GenInviteLink(userService.CustomId, userService.UserId);
if (this != null && friendService.IsCurrent) inviteLink = link;
}
void OnClickClose()
{
UIManager.Instance.DestroyUI(UITypes.FishingSocialInviteFriendsPopupPanel);
}
void OnClickQuestionmark()
{
_ = UIManager.Instance.ShowUI(UITypes.FishingSocialInviteFriendsInfoPopupPanel);
}
void OnClickInviteLink()
{
if (string.IsNullOrEmpty(inviteLink))
{
return;
}
if (adapter == null)
{
adapter = UnityNativeSharing.Create();
}
string invite = LocalizationMgr.GetFormatTextValue("Invite_Link", inviteLink);
adapter.ShareText(invite);
}
void OnClickInviteFB()
{
if (string.IsNullOrEmpty(inviteLink))
{
return;
}
string FBInvite_title = LocalizationMgr.GetText("FBInvite_title");
string FBInvite_content = LocalizationMgr.GetText("FBInvite_content");
UnityBridgeFunc.FBShareLink(FBInvite_title, FBInvite_content, inviteLink);
}
}