477 lines
12 KiB
C#
477 lines
12 KiB
C#
![]() |
// ***********************************************************************
|
|||
|
// Assembly : Game
|
|||
|
// Author : Kimch
|
|||
|
// Created : 2021-11-08
|
|||
|
// Description :
|
|||
|
// Last Modified By :
|
|||
|
// Last Modified On :
|
|||
|
// ***********************************************************************
|
|||
|
// <copyright file= "SevenSignActivity" company="Kunpo"></copyright>
|
|||
|
// <summary></summary>
|
|||
|
// ***********************************************************************
|
|||
|
|
|||
|
using CodeStage.AntiCheat.ObscuredTypes;
|
|||
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
|
|||
|
namespace G
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 女神节活动
|
|||
|
/// </summary>
|
|||
|
public class WomenActivity : Activity
|
|||
|
{
|
|||
|
#region Field
|
|||
|
|
|||
|
ItemActivityParent _item;
|
|||
|
|
|||
|
List<Mission> _missions;
|
|||
|
|
|||
|
ObscuredInt _activityStatus;
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Property
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 签到活动
|
|||
|
/// </summary>
|
|||
|
public ActivityInfo signActivityInfo
|
|||
|
{
|
|||
|
get { return ActivityProxy.Instance.GetActivity(_item.signActivity); }
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 兑换活动
|
|||
|
/// </summary>
|
|||
|
public ActivityInfo exchangeActivityInfo
|
|||
|
{
|
|||
|
get { return ActivityProxy.Instance.GetActivity(_item.exchangeActivity); }
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 礼包活动
|
|||
|
/// </summary>
|
|||
|
public ActivityInfo giftBoxActivityInfo
|
|||
|
{
|
|||
|
get { return ActivityProxy.Instance.GetActivity(_item.giftActivity); }
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 今天签到
|
|||
|
/// </summary>
|
|||
|
public bool signInToday
|
|||
|
{
|
|||
|
get { return !TimeProxy.Instance.GetTimeKey(_item.signTime); }
|
|||
|
set
|
|||
|
{
|
|||
|
TimeProxy.Instance.TryTimeKey(_item.signTime);
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 签到次数
|
|||
|
/// </summary>
|
|||
|
public int signInCount
|
|||
|
{
|
|||
|
get { return signActivityInfo.curValue; }
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 活动任务
|
|||
|
/// </summary>
|
|||
|
public IList<Mission> missions
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
CheckFistivalMission();
|
|||
|
_missions.Sort();
|
|||
|
return _missions;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void CheckFistivalMission()
|
|||
|
{
|
|||
|
MissionProxy.Instance.CheckMission();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 开始时间
|
|||
|
/// </summary>
|
|||
|
public int startTimestamp
|
|||
|
{
|
|||
|
get { return _item.startTime; }
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 结束时间
|
|||
|
/// </summary>
|
|||
|
public int endTimestamp
|
|||
|
{
|
|||
|
get { return _item.endTime; }
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 是否已开启活动
|
|||
|
/// </summary>
|
|||
|
public bool isStartWomanActivity
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
CheckStatus();
|
|||
|
return activityStatus == 1;
|
|||
|
}
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 是否已结束活动
|
|||
|
/// </summary>
|
|||
|
public bool isEndMomanActivity
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
CheckStatus();
|
|||
|
return activityStatus == 2;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 签到活动剩余时间
|
|||
|
/// </summary>
|
|||
|
public string sigeInSurplusTime
|
|||
|
{
|
|||
|
get { return F.Utils.Time.ToTimeString(signActivityInfo.endTimestamp - Launch.Timestamp); }
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 签到活动结束
|
|||
|
/// </summary>
|
|||
|
public bool isSigeInActivityEnd
|
|||
|
{
|
|||
|
get { return signActivityInfo.endTimestamp < Launch.Timestamp; }
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// 兑换活动剩余时间
|
|||
|
/// </summary>
|
|||
|
public string exchangeSurplusTime
|
|||
|
{
|
|||
|
get { return F.Utils.Time.ToTimeString(exchangeActivityInfo.endTimestamp - Launch.Timestamp); }
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
///
|
|||
|
/// </summary>
|
|||
|
public Item.ItemInfo activityMoney
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return new Item.ItemInfo(10, MoneyProxy.Instance.GetMoney(10));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 0 没有开始 1 进行中 2 已结束
|
|||
|
/// </summary>
|
|||
|
public int activityStatus
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return _activityStatus;
|
|||
|
}
|
|||
|
private set
|
|||
|
{
|
|||
|
_activityStatus = value;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Method
|
|||
|
|
|||
|
public WomenActivity()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 签到API
|
|||
|
/// </summary>
|
|||
|
/// <param name="doubleAward"></param>
|
|||
|
public void Signin(Callback2 callback)
|
|||
|
{
|
|||
|
bool doubleAward = false;
|
|||
|
if (signInToday)
|
|||
|
{
|
|||
|
GlobalNotifier.PostNotification(GlobalDefine.EVENT_SHOW_TOAST, "今日已签到");
|
|||
|
return;
|
|||
|
}
|
|||
|
signInToday = true;
|
|||
|
|
|||
|
var signActivity = signActivityInfo;
|
|||
|
signActivity.curValue += 1;
|
|||
|
if (signActivity.curValue <= signActivity.subInfos.Length)
|
|||
|
{
|
|||
|
var subInfo = signActivity.subInfos[signActivity.curValue - 1];
|
|||
|
subInfo.status = 2;
|
|||
|
|
|||
|
var reward = subInfo.rewardInfos[0];
|
|||
|
if (doubleAward)
|
|||
|
{
|
|||
|
reward.Apply(3);
|
|||
|
}
|
|||
|
|
|||
|
if (reward.id > 0)
|
|||
|
{
|
|||
|
var prop = ItemProxy.Instance.GetStaticItem<ItemProp>(reward.id);
|
|||
|
RewardProxy.Instance.GetRewardWithUI(reward, (error, message) =>
|
|||
|
{
|
|||
|
GlobalNotifier.PostNotification(GlobalDefine.EVENT_MONEY_CHANGED);
|
|||
|
GlobalNotifier.PostNotification(GlobalDefine.EVENT_SENVEN_SIGNIN);
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (signActivity.curValue >= signActivity.subInfos.Length)
|
|||
|
signActivity.status = 1;
|
|||
|
ActivityProxy.Instance.SaveActivity(signActivity);
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 兑换API
|
|||
|
/// </summary>
|
|||
|
/// <param name="index"></param>
|
|||
|
/// <param name="callback"></param>
|
|||
|
public void Exchange(int index, Callback2 callback)
|
|||
|
{
|
|||
|
var activityInfo = this.exchangeActivityInfo;
|
|||
|
ActivitySubInfo subInfo = null;
|
|||
|
foreach (var item in activityInfo.subInfos)
|
|||
|
{
|
|||
|
if (item.id == index)
|
|||
|
{
|
|||
|
subInfo = item;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (subInfo != null)
|
|||
|
{
|
|||
|
//(缺少兑换成功时奖励的窗口)
|
|||
|
if (subInfo.curValue < subInfo.maxValue)
|
|||
|
{
|
|||
|
if (MoneyProxy.Instance.CheckAndCostMoney(subInfo.item.typeArgs, GlobalDefine.COST_MONEY_WOMEN_AT))
|
|||
|
{
|
|||
|
RewardProxy.Instance.GetRewardsWithUI(subInfo.rewardInfos, (error, message) =>
|
|||
|
{
|
|||
|
|
|||
|
});
|
|||
|
subInfo.curValue += 1;
|
|||
|
ActivityProxy.Instance.SaveActivity(activityInfo);
|
|||
|
callback?.Invoke(ErrorCode.SUCCESS, "");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
callback?.Invoke(1, LanguageProxy.Instance.GetLocalString(613));
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
callback?.Invoke(1, "兑换已达上限");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 购买API
|
|||
|
/// </summary>
|
|||
|
/// <param name="id"></param>
|
|||
|
/// <param name="callback"></param>
|
|||
|
public void BuyGift(int id, Callback2 callback)
|
|||
|
{
|
|||
|
RmbShopProxy.Instance.BuyGiftBox(id, callback);
|
|||
|
}
|
|||
|
|
|||
|
public void Reset()
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void CheckStatus()
|
|||
|
{
|
|||
|
int status = this.activityStatus;
|
|||
|
if (status == 0)
|
|||
|
{
|
|||
|
if (endTimestamp < Launch.Timestamp)//活动已经结束
|
|||
|
OnActivityFinish();
|
|||
|
else if (startTimestamp < Launch.Timestamp)//活动已经开始
|
|||
|
OnActivityStart();
|
|||
|
|
|||
|
}
|
|||
|
else if (status == 1)
|
|||
|
{
|
|||
|
if (endTimestamp < Launch.Timestamp)
|
|||
|
OnActivityFinish();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void OnActivityStart()
|
|||
|
{
|
|||
|
//for (int i = 0; i < _missions.Count; i++)
|
|||
|
//{
|
|||
|
// _missions[i].Reset();
|
|||
|
//}
|
|||
|
|
|||
|
signActivityInfo.Reset();
|
|||
|
exchangeActivityInfo.Reset();
|
|||
|
giftBoxActivityInfo.Reset();
|
|||
|
|
|||
|
this.activityStatus = 1;
|
|||
|
Save();
|
|||
|
}
|
|||
|
|
|||
|
void OnActivityFinish()
|
|||
|
{
|
|||
|
//for (int i = 0; i < _missions.Count; i++)
|
|||
|
//{
|
|||
|
// _missions[i].Reset();
|
|||
|
//}
|
|||
|
|
|||
|
signActivityInfo.Reset();
|
|||
|
exchangeActivityInfo.Reset();
|
|||
|
giftBoxActivityInfo.Reset();
|
|||
|
|
|||
|
this.activityStatus = 2;
|
|||
|
Save();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 红点状态
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
public int GetRedPoint()
|
|||
|
{
|
|||
|
if (this.GetRedPointSign() == 1)
|
|||
|
return 1;
|
|||
|
if (this.GetRedPointExchange() == 1)
|
|||
|
return 1;
|
|||
|
if (this.GetRedPointGift() == 1)
|
|||
|
return 1;
|
|||
|
if (this.GetRedPointMission() == 1)
|
|||
|
return 1;
|
|||
|
return 0;
|
|||
|
}
|
|||
|
public int GetRedPointSign()
|
|||
|
{
|
|||
|
if (isSigeInActivityEnd)
|
|||
|
{
|
|||
|
return 0;
|
|||
|
}
|
|||
|
if (!isStartWomanActivity)
|
|||
|
return 0;
|
|||
|
return signInToday ? 0 : 1;
|
|||
|
}
|
|||
|
public int GetRedPointExchange()
|
|||
|
{
|
|||
|
if (isSigeInActivityEnd)
|
|||
|
{
|
|||
|
return 0;
|
|||
|
}
|
|||
|
if (!isStartWomanActivity)
|
|||
|
return 0;
|
|||
|
for (int i = 0; i < _missions.Count; i++)
|
|||
|
{
|
|||
|
if (_missions[i].isRewarding)
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
public int GetRedPointMission()
|
|||
|
{
|
|||
|
if (isSigeInActivityEnd)
|
|||
|
{
|
|||
|
return 0;
|
|||
|
}
|
|||
|
if (!isStartWomanActivity)
|
|||
|
return 0;
|
|||
|
for (int i = 0; i < _missions.Count; i++)
|
|||
|
{
|
|||
|
if (_missions[i].isRewarding)
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
public int GetRedPointGift()
|
|||
|
{
|
|||
|
if (isSigeInActivityEnd)
|
|||
|
{
|
|||
|
return 0;
|
|||
|
}
|
|||
|
if (!isStartWomanActivity)
|
|||
|
return 0;
|
|||
|
return TimeProxy.Instance.GetTimes(2000);
|
|||
|
}
|
|||
|
public void Init()
|
|||
|
{
|
|||
|
_item = ItemProxy.Instance.GetStaticItem<ItemActivityParent>(1);
|
|||
|
|
|||
|
//
|
|||
|
if (_item.missions != null)
|
|||
|
{
|
|||
|
_missions = new List<Mission>(_item.missions.Length);
|
|||
|
for (int i = 0; i < _item.missions.Length; i++)
|
|||
|
{
|
|||
|
_missions.Add(MissionProxy.Instance.GetMission(_item.missions[i]));
|
|||
|
}
|
|||
|
}
|
|||
|
//
|
|||
|
|
|||
|
//finish
|
|||
|
if (Launch.Timestamp > endTimestamp)
|
|||
|
{
|
|||
|
//结束了
|
|||
|
}
|
|||
|
else if (Launch.Timestamp >= startTimestamp)
|
|||
|
{
|
|||
|
//已激活
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
const string ARCHIVE_KEY_V1 = "at_women_v1";
|
|||
|
|
|||
|
public void Load()
|
|||
|
{
|
|||
|
var dataList = ArchiveProxy.Instance.GetIntList(ARCHIVE_KEY_V1);
|
|||
|
if (dataList != null && dataList.Count > 0)
|
|||
|
{
|
|||
|
activityStatus = dataList[0];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void Save()
|
|||
|
{
|
|||
|
var dataList = ArchiveProxy.Instance.GetIntList(ARCHIVE_KEY_V1);
|
|||
|
if (dataList != null)
|
|||
|
{
|
|||
|
dataList.Clear();
|
|||
|
dataList.Add(this.activityStatus);
|
|||
|
|
|||
|
ArchiveProxy.Instance.SetIntList(ARCHIVE_KEY_V1, dataList);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Static
|
|||
|
|
|||
|
public static WomenActivity Instance => ActivityProxy.Instance.womenActivity;
|
|||
|
|
|||
|
#endregion
|
|||
|
}
|
|||
|
}
|