using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
[XLua.LuaCallCSharp]
|
public class LuckyTreasureModel : Model, IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk, IOpenServerActivity
|
{
|
public event Action<int> onStateUpate;
|
private bool isLogin = true;
|
public bool isAutoLuckyTreasure = false;
|
public override void Init()
|
{
|
ParseFuncConfig();
|
DTCA003_tagUniversalGameRecInfo.onGetUniversalGameInfo += UpdateLuckyMessage;
|
OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
|
OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
|
OperationTimeHepler.Instance.operationAdvanceEvent += OperationAdvanceEvent;
|
OpenServerActivityCenter.Instance.Register((int)OpenServerActivityCenter.OSActivityType.LuckyTreasure, this);
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
autoLuckyItems.Clear();
|
isAutoLuckyTreasure = false;
|
curLuckValue = 0;
|
curLuckyItem = null;
|
resultInfolist.Clear();
|
isLogin = true;
|
}
|
|
public void OnAfterPlayerDataInitialize()
|
{
|
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
isLogin = false;
|
}
|
|
public override void UnInit()
|
{
|
DTCA003_tagUniversalGameRecInfo.onGetUniversalGameInfo -= UpdateLuckyMessage;
|
OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
|
OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent;
|
OperationTimeHepler.Instance.operationAdvanceEvent -= OperationAdvanceEvent;
|
}
|
|
public bool IsOpen
|
{
|
get
|
{
|
return OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.LuckyTreasure);
|
}
|
}
|
|
public bool IsAdvance { get { return false; } }
|
|
public bool priorityOpen
|
{
|
get
|
{
|
return OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.LuckyTreasure);
|
}
|
}
|
|
public OperationLuckyTreasure GetOperation()
|
{
|
OperationBase operationBase;
|
if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.LuckyTreasure, out operationBase))
|
{
|
return operationBase as OperationLuckyTreasure;
|
}
|
|
return null;
|
}
|
|
private void OperationAdvanceEvent(Operation type)
|
{
|
if (type == Operation.LuckyTreasure)
|
{
|
if (onStateUpate != null)
|
{
|
onStateUpate((int)OpenServerActivityCenter.OSActivityType.LuckyTreasure);
|
}
|
}
|
}
|
|
private void OperationStartEvent(Operation type, int state)
|
{
|
if (type == Operation.LuckyTreasure && state == 0)
|
{
|
if (onStateUpate != null)
|
{
|
onStateUpate((int)OpenServerActivityCenter.OSActivityType.LuckyTreasure);
|
}
|
}
|
}
|
|
private void OperationEndEvent(Operation type, int state)
|
{
|
if (type == Operation.LuckyTreasure && state == 0)
|
{
|
if (onStateUpate != null)
|
{
|
onStateUpate((int)OpenServerActivityCenter.OSActivityType.LuckyTreasure);
|
}
|
}
|
}
|
|
|
#region 表数据
|
public int luckyTreasurePrice { get; private set; }
|
public int luckyTreasurePoint { get; private set; }
|
public void ParseFuncConfig()
|
{
|
var luckyAppraisal = FuncConfigConfig.Get("LuckyAppraisal");
|
luckyTreasurePrice = int.Parse(luckyAppraisal.Numerical1);
|
luckyTreasurePoint = int.Parse(luckyAppraisal.Numerical2);
|
}
|
#endregion
|
|
#region 协议
|
public int curLuckValue { get; private set; }
|
public bool isFree { get; private set;}
|
public OperationLuckyTreasure.LuckyTreasureItem curLuckyItem { get; private set; }
|
public List<OperationLuckyTreasure.LuckyTreasureItem> autoLuckyItems = new List<OperationLuckyTreasure.LuckyTreasureItem>();
|
public event Action UpdateLuckyResultEvent;
|
public event Action UpdateMessageEvent;
|
|
public void UpdateLuckyTreasureResult(HAA1E_tagMCLuckyTreasureResultInfo resultInfo)
|
{
|
curLuckValue = resultInfo.LuckyPoint;
|
isFree = resultInfo.HasFree == 0;
|
if(resultInfo.ItemID != 0)
|
{
|
curLuckyItem = new OperationLuckyTreasure.LuckyTreasureItem((int)resultInfo.ItemID,resultInfo.ItemCnt,resultInfo.IsBind);
|
if (isAutoLuckyTreasure)
|
{
|
var luckyItem = new OperationLuckyTreasure.LuckyTreasureItem((int)resultInfo.ItemID, resultInfo.ItemCnt, resultInfo.IsBind);
|
autoLuckyItems.Add(luckyItem);
|
if (!WindowCenter.Instance.IsOpen<AutomaticTreasureWin>())
|
{
|
WindowCenter.Instance.Open<AutomaticTreasureWin>();
|
}
|
if(IsBigLuckItem())
|
{
|
WindowCenter.Instance.Close<AutomaticTreasureWin>();
|
}
|
else
|
{
|
SendStartLuckyTreasure();
|
}
|
}
|
}
|
if (UpdateLuckyResultEvent != null)
|
{
|
UpdateLuckyResultEvent();
|
}
|
}
|
|
public List<string> resultInfolist = new List<string>();
|
public void UpdateLuckyMessage(HA003_tagUniversalGameRecInfo recInfo)
|
{
|
if (recInfo.Type != 12) return;
|
|
foreach (var item in recInfo.UniversalGameRec)
|
{
|
string playerName = item.StrValue1;
|
if(isLogin)
|
{
|
resultInfolist.Add(playerName);
|
}
|
else
|
{
|
resultInfolist.Insert(0, playerName);
|
}
|
|
}
|
if(UpdateMessageEvent != null)
|
{
|
UpdateMessageEvent();
|
}
|
}
|
|
public void SendStartLuckyTreasure()
|
{
|
if(!isFree)
|
{
|
ulong haveMoney = UIHelper.GetMoneyCnt(1);
|
if (haveMoney < (ulong)luckyTreasurePrice)
|
{
|
isAutoLuckyTreasure = false;
|
WindowCenter.Instance.Open<RechargeTipWin>();
|
return;
|
}
|
}
|
|
var playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>();
|
int remainGrid = playerPack.GetReaminGridCount(PackType.rptItem);
|
if(remainGrid < 1)
|
{
|
isAutoLuckyTreasure = false;
|
SysNotifyMgr.Instance.ShowTip("GeRen_chenxin_676165",PackType.rptItem);
|
return;
|
}
|
|
CAA08_tagCMStartLuckyTreasure startLuckyTreasure = new CAA08_tagCMStartLuckyTreasure();
|
GameNetSystem.Instance.SendInfo(startLuckyTreasure);
|
}
|
#endregion
|
|
public bool IsBigLuckItem()
|
{
|
var operation = GetOperation();
|
if(operation != null)
|
{
|
if (curLuckyItem != null)
|
{
|
OperationLuckyTreasure.LuckyTreasureItem luckyItem = null;
|
if (operation.TryGetLuckBigAward(out luckyItem))
|
{
|
return luckyItem.itemId == curLuckyItem.itemId;
|
}
|
}
|
}
|
return false;
|
}
|
|
}
|
}
|