using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
|
using System;
|
using LitJson;
|
|
namespace vnxbqy.UI
|
{
|
|
public class RoleModel : Model,IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk
|
{
|
public int openUIMark = 0; //自定义openui带的数字含义,规律其一为功能ID*10000 + 数字
|
Dictionary<int,Int2> customAwardsDict = new Dictionary<int, Int2>();
|
|
public event Action OnCustomAwardsEvent;
|
FriendsModel friendsModel { get { return ModelCenter.Instance.GetModel<FriendsModel>(); } }
|
public string RecordPlayerNameKey;
|
|
|
//评分 分享奖励
|
public int[][] shareItems;
|
public int shareType; //对应越南 public static final int SHARE_URL = 101; //public static final int SHARE_IMG = 104;
|
public int[][] zanItems;
|
public int[][] reviewItems;
|
public int popReviewLV;
|
public float clickZanBtnTick = 0;
|
public float clickReviewBtnTick = 0;
|
Dictionary<int, int> playerRewardDict = new Dictionary<int, int>();
|
public event Action<int> OnPlayerRewardEvent;
|
//Redpoint shareRedpoint = new Redpoint(201, MainRedDot.RedPoint_Share);
|
|
public override void Init()
|
{
|
FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
|
PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataUpdate;
|
PlayerDatas.Instance.baseData.CoinChangeEvent += CoinChangeEvent;
|
|
var config = FuncConfigConfig.Get("ShareGameReward");
|
shareItems = JsonMapper.ToObject<int[][]>(config.Numerical1);
|
shareType = int.Parse(config.Numerical4);
|
|
config = FuncConfigConfig.Get("GoodGameReward");
|
zanItems = JsonMapper.ToObject<int[][]>(config.Numerical1);
|
reviewItems = JsonMapper.ToObject<int[][]>(config.Numerical4);
|
popReviewLV = int.Parse(config.Numerical5);
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
customAwardsDict.Clear();
|
clickZanBtnTick = 0;
|
clickReviewBtnTick = 0;
|
playerRewardDict.Clear();
|
}
|
|
public void OnAfterPlayerDataInitialize()
|
{
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
RecordPlayerNameKey = StringUtility.Contact("RecordPlayerName",PlayerDatas.Instance.baseData.PlayerID);
|
SendRenameInfoToPlayer();
|
//UpdateShareRedpoint();
|
}
|
|
public override void UnInit()
|
{
|
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
|
PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataUpdate;
|
PlayerDatas.Instance.baseData.CoinChangeEvent -= CoinChangeEvent;
|
}
|
|
public string playerRename { get; private set; }
|
public void SetRename(string rename)
|
{
|
playerRename = rename;
|
}
|
#region 协议
|
public void ServerRenameResult(HA921_tagUpdatePlayerNameResult renameResult)
|
{
|
switch ((RoleRenameResult)renameResult.Result)
|
{
|
case RoleRenameResult.MoneyErr:
|
SysNotifyMgr.Instance.ShowTip("GoldErr");
|
break;
|
case RoleRenameResult.NameRuleErr:
|
ServerTipDetails.DisplayNormalTip(Language.Get("L1007"));
|
break;
|
case RoleRenameResult.NameLengErr:
|
break;
|
case RoleRenameResult.NameRepeatErr:
|
SysNotifyMgr.Instance.ShowTip("RepeatName");
|
break;
|
case RoleRenameResult.RenameFailErr:
|
break;
|
case RoleRenameResult.RenameSuccess:
|
LocalSave.SetString(RecordPlayerNameKey, UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName));
|
SysNotifyMgr.Instance.ShowTip("RenameSuccess01", playerRename);
|
if(WindowCenter.Instance.IsOpen<RoleRenameWin>())
|
{
|
WindowCenter.Instance.Close<RoleRenameWin>();
|
}
|
GameNetSystem.Instance.Reconnect();
|
break;
|
}
|
}
|
#endregion
|
|
private void SendRenameInfoToPlayer()
|
{
|
if(PlayerPrefs.HasKey(RecordPlayerNameKey))
|
{
|
string recordName = LocalSave.GetString(RecordPlayerNameKey);
|
if(!string.IsNullOrEmpty(recordName))
|
{
|
string info = Language.Get("RenameText_02",recordName, playerRename);
|
friendsModel.SendChatInfoByGroup(GroupType.Friend, info);
|
PlayerPrefs.DeleteKey(RecordPlayerNameKey);
|
}
|
}
|
}
|
|
public void OpenRolePanel()
|
{
|
var functionOrder = 0;
|
var godWeaponModel = ModelCenter.Instance.GetModel<MagicianModel>();
|
var gatherSoulModel = ModelCenter.Instance.GetModel<GatheringSoulModel>();
|
var reikiRootModel = ModelCenter.Instance.GetModel<ReikiRootModel>();
|
var fashionDressModel = ModelCenter.Instance.GetModel<FashionDressModel>();
|
if (MainRedDot.Instance.roleTagRedpoint.state != RedPointState.None)
|
{
|
functionOrder = 0;
|
}
|
else if (reikiRootModel.redpoint.state == RedPointState.Simple)
|
{
|
functionOrder = 1;
|
}
|
else if (fashionDressModel.redpoint.state == RedPointState.Simple)
|
{
|
functionOrder = 2;
|
}
|
else if (godWeaponModel.magicianRedpoint.state != RedPointState.None)
|
{
|
functionOrder = 3;
|
}
|
|
WindowCenter.Instance.Open<RolePanel>(false, functionOrder);
|
}
|
|
//功能:是否提醒过 1 在线特惠
|
public Dictionary<int, int> funcInfo = new Dictionary<int, int>();
|
private void OnFuncStateChangeEvent(int id)
|
{
|
//if (id == 193)
|
//{
|
// //无限货币每日上线弹框一次
|
// if(OnlineRechargeModel.Instance.IsOpen())
|
// {
|
// funcInfo[1] = 0;
|
// }
|
//}
|
}
|
|
public void SetCustomAwardsState(HA3CC_tagMCCustomAwardInfo pack)
|
{
|
for (int i = 0; i < pack.RecordStateList.Length; i++)
|
{
|
customAwardsDict[pack.RecordStateList[i].KeyNum] = new Int2((int)pack.RecordStateList[i].CanGetState, (int)pack.RecordStateList[i].GetState);
|
}
|
OnCustomAwardsEvent?.Invoke();
|
}
|
|
//对应奖励表
|
// 0 未达成 1 可领取 2 已领取
|
public int GetCustomAwardState(int awardID)
|
{
|
int keyNum = awardID / 31;
|
int bitNum = awardID % 31;
|
if (!customAwardsDict.ContainsKey(keyNum))
|
return 0;
|
|
if (((int)Math.Pow(2, bitNum) & customAwardsDict[keyNum].x) <= 0)
|
return 0;
|
|
if (((int)Math.Pow(2, bitNum) & customAwardsDict[keyNum].y) <= 0)
|
return 1;
|
|
return 2;
|
}
|
|
public void GetCustomAward(int awardID)
|
{
|
CA504_tagCMPlayerGetReward pak = new CA504_tagCMPlayerGetReward();
|
pak.RewardType = 61;
|
pak.DataEx = (uint)awardID;
|
GameNetSystem.Instance.SendInfo(pak);
|
}
|
|
public void UpdatePlayerReward(HA30C_tagMCPlayerRewardGetRecord pack)
|
{
|
playerRewardDict[pack.RewardType] = (int)pack.RewardGetRecord;
|
//UpdateShareRedpoint();
|
OnPlayerRewardEvent?.Invoke(pack.RewardType);
|
}
|
|
|
public int GetPlayerRewardState(int type)
|
{
|
if (!playerRewardDict.ContainsKey(type))
|
return 0;
|
|
return playerRewardDict[type];
|
}
|
|
|
//void UpdateShareRedpoint()
|
//{
|
// shareRedpoint.state = RedPointState.None;
|
// if (GetShareState() != 2 || GetZanState() != 2 || GetReviewState() != 2)
|
// shareRedpoint.state = RedPointState.GetReward;
|
//}
|
|
//分享可每日领取 0 未分享 1 可领取 2 已领取
|
public int GetShareState()
|
{
|
if (TimeUtility.ServerNow.DayOfYear != LocalSave.GetInt("ShareToFBDay" + PlayerDatas.Instance.baseData.PlayerID))
|
return 0;
|
|
if (!playerRewardDict.ContainsKey(34))
|
return 1;
|
|
if (playerRewardDict[34] == 0) return 1;
|
return 2;
|
}
|
|
//点赞仅可领1次 0 未点赞 1 可领取 2 已领取
|
public int GetZanState()
|
{
|
if (!playerRewardDict.ContainsKey(35) || playerRewardDict[35] == 0)
|
{
|
if (LocalSave.GetInt("ZanToFB" + PlayerDatas.Instance.baseData.PlayerID) == 0)
|
return 0;
|
|
if (Time.time - clickZanBtnTick < 5)
|
return 0;
|
|
return 1;
|
}
|
|
return 2;
|
}
|
|
//评分仅可领1次 0 未评分 1 可领取 2 已领取
|
public int GetReviewState()
|
{
|
if (!playerRewardDict.ContainsKey(67) || playerRewardDict[67] == 0)
|
{
|
if (LocalSave.GetInt("ReviewStore" + PlayerDatas.Instance.baseData.PlayerID) == 0)
|
return 0;
|
|
if (Time.time - clickReviewBtnTick < 5)
|
return 0;
|
|
return 1;
|
}
|
|
return 2;
|
}
|
|
|
public void GetCustomAwardByType(int type)
|
{
|
CA504_tagCMPlayerGetReward pak = new CA504_tagCMPlayerGetReward();
|
pak.RewardType = (byte)type;
|
GameNetSystem.Instance.SendInfo(pak);
|
}
|
|
public void PopReview()
|
{
|
if (PlayerDatas.Instance.baseData.LV != popReviewLV)
|
return;
|
|
var state = GetReviewState();
|
if (state == 0)
|
{
|
ynmbxxjUtil.Instance.GoToPingfen();
|
clickReviewBtnTick = Time.time;
|
LocalSave.SetInt("ReviewStore" + PlayerDatas.Instance.baseData.PlayerID, 1);
|
}
|
}
|
|
private void OnPlayerDataUpdate(PlayerDataType type)
|
{
|
if (type == PlayerDataType.LV)
|
{
|
PopReview();
|
ReportLV();
|
}
|
|
else if (type == PlayerDataType.FightPower)
|
{
|
ReportFightPower();
|
}
|
}
|
|
void ReportLV()
|
{
|
int state = LocalSave.GetInt("PlayerLVReport" + PlayerDatas.Instance.baseData.PlayerID);
|
if (PlayerDatas.Instance.baseData.LV >= 40 && state == 0)
|
{
|
ynmbxxjUtil.Instance.TraceEvent("upgradeRole_40", "", false);
|
LocalSave.SetInt("PlayerLVReport" + PlayerDatas.Instance.baseData.PlayerID, 1);
|
}
|
state = LocalSave.GetInt("PlayerLVReport" + PlayerDatas.Instance.baseData.PlayerID);
|
if (PlayerDatas.Instance.baseData.LV >= 60 && state <= 1)
|
{
|
ynmbxxjUtil.Instance.TraceEvent("upgradeRole_60", "", false);
|
LocalSave.SetInt("PlayerLVReport" + PlayerDatas.Instance.baseData.PlayerID, 2);
|
}
|
state = LocalSave.GetInt("PlayerLVReport" + PlayerDatas.Instance.baseData.PlayerID);
|
if (PlayerDatas.Instance.baseData.LV >= 100 && state <= 2)
|
{
|
ynmbxxjUtil.Instance.TraceEvent("upgradeRole_100", "", false);
|
LocalSave.SetInt("PlayerLVReport" + PlayerDatas.Instance.baseData.PlayerID, 3);
|
}
|
}
|
|
|
//累计充值达99美金 pay99 上报一次 2435598
|
//累计充值达19.99美金 pay19.99 上报一次 491793
|
//累计充值达49.99美金 pay49.99 上报一次 1229853
|
//完成首充 firstpurchase 上报一次
|
void CoinChangeEvent(int beforeCoin, int afterCoin)
|
{
|
int state = LocalSave.GetInt("PlayerCoinReport" + PlayerDatas.Instance.baseData.PlayerID);
|
if (afterCoin > 0 && state == 0)
|
{
|
ynmbxxjUtil.Instance.TraceEvent("firstpurchase", "", false);
|
LocalSave.SetInt("PlayerCoinReport" + PlayerDatas.Instance.baseData.PlayerID, 1);
|
}
|
|
state = LocalSave.GetInt("PlayerCoinReport" + PlayerDatas.Instance.baseData.PlayerID);
|
if (afterCoin >= 1999 && state <= 1)
|
{
|
ynmbxxjUtil.Instance.TraceEvent("pay19.99", "", false);
|
LocalSave.SetInt("PlayerCoinReport" + PlayerDatas.Instance.baseData.PlayerID, 2);
|
}
|
|
state = LocalSave.GetInt("PlayerCoinReport" + PlayerDatas.Instance.baseData.PlayerID);
|
if (afterCoin >= 4999 && state <= 2)
|
{
|
ynmbxxjUtil.Instance.TraceEvent("pay49.99", "", false);
|
LocalSave.SetInt("PlayerCoinReport" + PlayerDatas.Instance.baseData.PlayerID, 3);
|
}
|
|
state = LocalSave.GetInt("PlayerCoinReport" + PlayerDatas.Instance.baseData.PlayerID);
|
if (afterCoin >= 9900 && state <= 3)
|
{
|
ynmbxxjUtil.Instance.TraceEvent("pay99", "", false);
|
LocalSave.SetInt("PlayerCoinReport" + PlayerDatas.Instance.baseData.PlayerID, 4);
|
}
|
}
|
|
//战力达到20万 power20 上报一次
|
//战力达到50万 power50 上报一次
|
//战力达到100万 power100 上报一次
|
//战力达到200万 power200 上报一次
|
void ReportFightPower()
|
{
|
int state = LocalSave.GetInt("PlayerPowerReport" + PlayerDatas.Instance.baseData.PlayerID);
|
if (PlayerDatas.Instance.baseData.FightPoint >= 200000 && state <= 0)
|
{
|
ynmbxxjUtil.Instance.TraceEvent("power20", "", false);
|
LocalSave.SetInt("PlayerPowerReport" + PlayerDatas.Instance.baseData.PlayerID, 1);
|
}
|
|
state = LocalSave.GetInt("PlayerPowerReport" + PlayerDatas.Instance.baseData.PlayerID);
|
if (PlayerDatas.Instance.baseData.FightPoint >= 500000 && state <= 1)
|
{
|
ynmbxxjUtil.Instance.TraceEvent("power50", "", false);
|
LocalSave.SetInt("PlayerPowerReport" + PlayerDatas.Instance.baseData.PlayerID, 2);
|
}
|
|
state = LocalSave.GetInt("PlayerPowerReport" + PlayerDatas.Instance.baseData.PlayerID);
|
if (PlayerDatas.Instance.baseData.FightPoint >= 1000000 && state <= 2)
|
{
|
ynmbxxjUtil.Instance.TraceEvent("power100", "", false);
|
LocalSave.SetInt("PlayerPowerReport" + PlayerDatas.Instance.baseData.PlayerID, 3);
|
}
|
|
state = LocalSave.GetInt("PlayerPowerReport" + PlayerDatas.Instance.baseData.PlayerID);
|
if (PlayerDatas.Instance.baseData.FightPoint >= 2000000 && state <= 3)
|
{
|
ynmbxxjUtil.Instance.TraceEvent("power200", "", false);
|
LocalSave.SetInt("PlayerPowerReport" + PlayerDatas.Instance.baseData.PlayerID, 4);
|
}
|
}
|
|
}
|
}
|
|