239 lines
6.9 KiB
C#
239 lines
6.9 KiB
C#
![]() |
// ***********************************************************************
|
|||
|
// Assembly : Game
|
|||
|
// Author : Kimch
|
|||
|
// Created : 2021-12-09
|
|||
|
// Description :
|
|||
|
// Last Modified By :
|
|||
|
// Last Modified On :
|
|||
|
// ***********************************************************************
|
|||
|
// <copyright file= "InviteProxy" company="Kunpo"></copyright>
|
|||
|
// <summary></summary>
|
|||
|
// ***********************************************************************
|
|||
|
using F;
|
|||
|
using F.Network;
|
|||
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace G
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 邀请
|
|||
|
/// </summary>
|
|||
|
public class InviteProxy : F.GameProxy
|
|||
|
{
|
|||
|
public class FriendInfo
|
|||
|
{
|
|||
|
public string userId;
|
|||
|
public string nickName;
|
|||
|
public string avatarUrl;
|
|||
|
public int inviteTimestamp;
|
|||
|
}
|
|||
|
|
|||
|
#region Field
|
|||
|
|
|||
|
private int _obInviteCount;
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Property
|
|||
|
|
|||
|
/// <summary>
|
|||
|
///
|
|||
|
/// </summary>
|
|||
|
public int inviteCount => _obInviteCount;
|
|||
|
|
|||
|
public ActivityInfo inviteActivty => ActivityProxy.Instance.GetActivity(701);
|
|||
|
|
|||
|
public readonly List<FriendInfo> friendInfos = new List<FriendInfo>();
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Method
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Invite
|
|||
|
|
|||
|
public void InviteShare(Callback2 callback)
|
|||
|
{
|
|||
|
var inviteInfo = new KPlatform.InviteInfo
|
|||
|
{
|
|||
|
type = "invite1",
|
|||
|
userId = UserProxy.UserId
|
|||
|
};
|
|||
|
ShareProxy.Instance.ShareAppWithInvite(inviteInfo.ToString());
|
|||
|
}
|
|||
|
|
|||
|
public void GetInviteCount(Callback2 callback)
|
|||
|
{
|
|||
|
ServerProxy.Instance.GetInviteCount(callback);
|
|||
|
}
|
|||
|
|
|||
|
public void GetInviteList(Callback2 callback)
|
|||
|
{
|
|||
|
ServerProxy.Instance.GetInviteList(callback);
|
|||
|
}
|
|||
|
|
|||
|
public void GetRewards(ActivityInfo activityInfo, Callback2 callback)
|
|||
|
{
|
|||
|
var activity = inviteActivty;
|
|||
|
if (activity != null)
|
|||
|
{
|
|||
|
if (activity.status == 0)
|
|||
|
{
|
|||
|
bool completed = true;
|
|||
|
foreach (var subInfo in activity.subInfos)
|
|||
|
{
|
|||
|
if (subInfo.status == 0)
|
|||
|
{
|
|||
|
completed = false;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
if (completed)
|
|||
|
activity.status = 1;
|
|||
|
}
|
|||
|
|
|||
|
if (activity.status == 1)
|
|||
|
{
|
|||
|
activity.status = 2;
|
|||
|
ActivityProxy.Instance.SaveActivity(activity);
|
|||
|
RewardProxy.Instance.GetRewardsWithUI(activity.rewardInfos, callback);
|
|||
|
}
|
|||
|
else if (activity.status == 0)
|
|||
|
callback?.Invoke(1, "未完成");
|
|||
|
else
|
|||
|
callback?.Invoke(2, "已领取");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void GetRewards(ActivitySubInfo subInfo, Callback2 callback)
|
|||
|
{
|
|||
|
var activity = inviteActivty;
|
|||
|
if (activity != null)
|
|||
|
{
|
|||
|
if (subInfo.status == 1)
|
|||
|
{
|
|||
|
subInfo.status = 2;
|
|||
|
|
|||
|
ActivityProxy.Instance.SaveActivity(activity);
|
|||
|
RewardProxy.Instance.GetRewardsWithUI(subInfo.rewardInfos, callback);
|
|||
|
}
|
|||
|
else if (subInfo.status == 0)
|
|||
|
callback?.Invoke(1, $"还需邀请{subInfo.maxValue - subInfo.curValue}人");
|
|||
|
else
|
|||
|
callback?.Invoke(2, "已领取");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void UpdateActivty()
|
|||
|
{
|
|||
|
var activtyInfo = this.inviteActivty;
|
|||
|
if (activtyInfo == null)
|
|||
|
return;
|
|||
|
|
|||
|
var subInfos = activtyInfo.subInfos;
|
|||
|
foreach (var subInfo in subInfos)
|
|||
|
{
|
|||
|
if (subInfo.status == 0)
|
|||
|
{
|
|||
|
subInfo.curValue = _obInviteCount;
|
|||
|
if (subInfo.curValue >= subInfo.maxValue)
|
|||
|
{
|
|||
|
subInfo.status = 1;
|
|||
|
//foreach (var subInfo2 in subInfos)
|
|||
|
//{
|
|||
|
// if (subInfo2.status == 2)
|
|||
|
// subInfo2.status = 1;
|
|||
|
//}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
activtyInfo.curValue = 0;
|
|||
|
|
|||
|
if (activtyInfo.status == 0)
|
|||
|
{
|
|||
|
foreach (var subInfo in subInfos)
|
|||
|
{
|
|||
|
if (subInfo.status > 0)
|
|||
|
{
|
|||
|
activtyInfo.curValue += 1;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
activtyInfo.curValue = activtyInfo.maxValue;
|
|||
|
}
|
|||
|
ActivityProxy.Instance.SaveActivity(activtyInfo);
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Unity && Proxy
|
|||
|
|
|||
|
/// <summary>
|
|||
|
///
|
|||
|
/// </summary>
|
|||
|
public static InviteProxy Instance => GetInstance<InviteProxy>();
|
|||
|
/// <summary>
|
|||
|
///
|
|||
|
/// </summary>
|
|||
|
public override void InitCompleted()
|
|||
|
{
|
|||
|
KFramework.GameFacade.RegisterResp(GlobalDefine.PACKET_ID_GET_INVITE_COUNT, this);
|
|||
|
}
|
|||
|
|
|||
|
public override void ReadArchive()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
public override void Recv(IPacket packet)
|
|||
|
{
|
|||
|
var gp = packet as GamePacket;
|
|||
|
if (gp.error != GamePacket.ERROR_CODE_OK)
|
|||
|
{
|
|||
|
PostNotification(GlobalDefine.EVENT_SHOW_TOAST, gp.data as string);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (gp.id == GlobalDefine.PACKET_ID_GET_INVITE_LIST)
|
|||
|
{
|
|||
|
friendInfos.Clear();
|
|||
|
IList<object> inviteList = gp.data as IList<object>;
|
|||
|
if (inviteList != null)
|
|||
|
{
|
|||
|
for (int i = 0; i < inviteList.Count; i++)
|
|||
|
{
|
|||
|
var dict = inviteList.GetDictionary(i);
|
|||
|
if (dict != null)
|
|||
|
friendInfos.Add(new FriendInfo
|
|||
|
{
|
|||
|
userId = dict.GetString("userid"),
|
|||
|
nickName = dict.GetString("nickname"),
|
|||
|
avatarUrl = dict.GetString("avatar"),
|
|||
|
inviteTimestamp = dict.GetInt("invit_time"),
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
#if UNITY_EDITOR
|
|||
|
_obInviteCount += 1;
|
|||
|
#else
|
|||
|
_obInviteCount = (int)packet.data;
|
|||
|
#endif
|
|||
|
|
|||
|
UpdateActivty();
|
|||
|
Debug.Log("InviteCount" + _obInviteCount);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
}
|
|||
|
}
|