提交
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
using BingoBrain.Core;
|
||||
|
||||
namespace BingoBrain
|
||||
{
|
||||
public class JTodCtrl : BaseCtrl
|
||||
{
|
||||
public static JTodCtrl Instance { get; private set; }
|
||||
|
||||
private JTodModel model;
|
||||
|
||||
#region 生命周期
|
||||
|
||||
protected override void OnInit()
|
||||
{
|
||||
Instance = this;
|
||||
}
|
||||
|
||||
protected override void OnDispose()
|
||||
{
|
||||
Instance = null;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c0faa78c231349b5bfe0a848b9fe9b98
|
||||
timeCreated: 1679557304
|
||||
@@ -0,0 +1,154 @@
|
||||
using System.Linq;
|
||||
using BingoBrain.Core;
|
||||
|
||||
namespace BingoBrain
|
||||
{
|
||||
public class JTodModel : BaseModel
|
||||
{
|
||||
/// <summary>
|
||||
/// 签到持续时间
|
||||
/// </summary>
|
||||
public int DailyDonusContinueTime;
|
||||
|
||||
public int GetDailyDonusDay()
|
||||
{
|
||||
var val = GameHelper.GetNowTime() - PreferencesMgr.Instance.OpenDailyBonusStampTime;
|
||||
if (val <= 0)
|
||||
{
|
||||
val = 1;
|
||||
}
|
||||
|
||||
var daySum = val / GameHelper.sunSecond;
|
||||
if (val % GameHelper.sunSecond > 0)
|
||||
{
|
||||
daySum++;
|
||||
}
|
||||
|
||||
if (daySum > PreferencesMgr.Instance.DailyBonusItemLst.Count)
|
||||
{
|
||||
SetDailyBonusItem();
|
||||
return GetDailyDonusDay();
|
||||
}
|
||||
|
||||
return (int)daySum;
|
||||
}
|
||||
|
||||
public string GetDailyDonusDayTime()
|
||||
{
|
||||
return GameHelper.GetInterval(GameHelper.GetTomorrowCountTime());
|
||||
}
|
||||
|
||||
#region 生命周期
|
||||
|
||||
protected override void OnInit()
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnDispose()
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnReset()
|
||||
{
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 读取数据
|
||||
|
||||
protected override void OnReadData()
|
||||
{
|
||||
var signDailyRewardModel = GameHelper.GetConfig<SignDailyModel>();
|
||||
DailyDonusContinueTime = GameHelper.sunSecond * signDailyRewardModel.GetCount();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region 消息
|
||||
|
||||
protected override void AddListener()
|
||||
{
|
||||
ctrlDispatcher.AddListener(CtrlMsg.Game_StartLater, InitData);
|
||||
}
|
||||
|
||||
private void InitData(object o)
|
||||
{
|
||||
GetDailyDonusDay();
|
||||
if (PreferencesMgr.Instance.DailyBonusItemLst.Count == 0)
|
||||
{
|
||||
SetDailyBonusItem();
|
||||
}
|
||||
|
||||
Hall.Instance.UpdateSecondEvent += CheckData;
|
||||
}
|
||||
|
||||
private void CheckData()
|
||||
{
|
||||
PreferencesMgr.Instance.DailyBonusItemLst.Clear();
|
||||
var val = GameHelper.GetNowTime() - PreferencesMgr.Instance.OpenDailyBonusStampTime;
|
||||
// 刷新签到
|
||||
if (PreferencesMgr.Instance.DailyBonusItemLst.Count == 0 || val >= DailyDonusContinueTime)
|
||||
{
|
||||
SetDailyBonusItem();
|
||||
}
|
||||
}
|
||||
|
||||
private void SetDailyBonusItem()
|
||||
{
|
||||
PreferencesMgr.Instance.DailyBonusItemLst.Clear();
|
||||
var signDailyRewardModel = GameHelper.GetConfig<SignDailyModel>();
|
||||
if (signDailyRewardModel != null)
|
||||
{
|
||||
foreach (var bonusItem in signDailyRewardModel.GetDataList().Select(item => new DailyBonusItem
|
||||
{
|
||||
id = item.item1,
|
||||
quantity = item.quantity[0],
|
||||
isDouble = item.isMulti,
|
||||
cont_index = item.cont_index,
|
||||
IsCollect = false
|
||||
}))
|
||||
{
|
||||
PreferencesMgr.Instance.DailyBonusItemLst.Add(bonusItem);
|
||||
}
|
||||
|
||||
PreferencesMgr.Instance.OpenDailyBonusStampTime = GameHelper.GetNowTime();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void RemoveListener()
|
||||
{
|
||||
ctrlDispatcher.RemoveListener(CtrlMsg.Game_Start, InitData);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
public class DailyBonusItem
|
||||
{
|
||||
/// <summary>
|
||||
/// 奖励id
|
||||
/// </summary>
|
||||
public int id;
|
||||
|
||||
/// <summary>
|
||||
/// 奖励数量
|
||||
/// </summary>
|
||||
public float quantity;
|
||||
|
||||
/// <summary>
|
||||
/// 是否翻倍
|
||||
/// </summary>
|
||||
public bool isDouble;
|
||||
|
||||
/// <summary>
|
||||
/// 控制器索引
|
||||
/// </summary>
|
||||
public int cont_index;
|
||||
|
||||
/// <summary>
|
||||
/// 是否领取过奖励
|
||||
/// </summary>
|
||||
public bool IsCollect;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: afd9427d85ab4e9181bd99b540d1dade
|
||||
timeCreated: 1679557305
|
||||
@@ -0,0 +1,239 @@
|
||||
using System;
|
||||
using FairyGUI;
|
||||
using UnityEngine;
|
||||
using BingoBrain.Core;
|
||||
using FGUI.JSign;
|
||||
using System.Collections.Generic;
|
||||
using DontConfuse;
|
||||
|
||||
namespace BingoBrain
|
||||
{
|
||||
public class JTodUI : BaseUI
|
||||
{
|
||||
private JTodUICtrl ctrl;
|
||||
private JTodModel model;
|
||||
private com_sign ui;
|
||||
private List<GObject> itemLst = new();
|
||||
|
||||
private Action CloseCb;
|
||||
|
||||
public JTodUI(JTodUICtrl ctrl) : base(ctrl)
|
||||
{
|
||||
uiName = UIConst.JTodUI;
|
||||
this.ctrl = ctrl;
|
||||
}
|
||||
|
||||
protected override void SetUIInfo(UIInfo uiInfo)
|
||||
{
|
||||
uiInfo.packageName = "JSign";
|
||||
uiInfo.assetName = "com_sign";
|
||||
uiInfo.layerType = UILayerType.Popup;
|
||||
uiInfo.isNeedOpenAnim = true;
|
||||
uiInfo.isNeedCloseAnim = true;
|
||||
uiInfo.isNeedUIMask = true;
|
||||
}
|
||||
|
||||
#region 生命周期
|
||||
|
||||
protected override void OnInit()
|
||||
{
|
||||
model = ModuleBoardk.GetModel(ModelConst.JTodModel) as JTodModel;
|
||||
}
|
||||
|
||||
protected override void OnClose()
|
||||
{
|
||||
ui?.FadeOut();
|
||||
Hall.Instance.UpdateSecondEvent -= UpdateTime;
|
||||
WebviewManager.Instance.SetDarkThough(true);
|
||||
CloseCb?.Invoke();
|
||||
}
|
||||
|
||||
protected override void OnBind()
|
||||
{
|
||||
ui = baseUI as com_sign;
|
||||
}
|
||||
|
||||
protected override void OnOpenBefore(object args)
|
||||
{
|
||||
WebviewManager.Instance.SetDarkThough(false);
|
||||
InitView();
|
||||
}
|
||||
|
||||
protected override void OnOpen(object args)
|
||||
{
|
||||
ui?.FadeIn();
|
||||
Hall.Instance.UpdateSecondEvent += UpdateTime;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 消息
|
||||
|
||||
protected override void AddListener()
|
||||
{
|
||||
}
|
||||
|
||||
protected override void RemoveListener()
|
||||
{
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private void InitView()
|
||||
{
|
||||
ui.fairyBatching = true;
|
||||
Audio.Instance.PlayDynamicEffect("pop_open");
|
||||
FX.Instance.SetFx<ParticleSystem>(ui.gp_bg, Fx_Type.fx_tanchuang_glow, null, CloseCb);
|
||||
ui.closeButton.SetClick(CtrlCloseUI);
|
||||
var signDailyRewardModel = GameHelper.GetConfig<SignDailyModel>();
|
||||
for (var i = 0; i < signDailyRewardModel.GetCount(); i++)
|
||||
{
|
||||
var index = i;
|
||||
var gObject = ui.list_sign.GetChildAt(i) as GComponent;
|
||||
itemLst.Add(gObject);
|
||||
FX.Instance.SetFx<ParticleSystem>(gObject.GetChild("gp_fx").asGraph, Fx_Type.fx_icon_glow, null,
|
||||
CloseCb);
|
||||
itemLst[i].SetClick(() => { OnClickItem(index); });
|
||||
}
|
||||
|
||||
RefreshUI();
|
||||
}
|
||||
|
||||
private void OnClickItem(int index)
|
||||
{
|
||||
var dailySum = model.GetDailyDonusDay();
|
||||
if (index + 1 > dailySum)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var dailyBonusItem = PreferencesMgr.Instance.DailyBonusItemLst[index];
|
||||
if (dailyBonusItem.IsCollect)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (index + 1 == dailySum)
|
||||
{
|
||||
GetReward(index, dailyBonusItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
GameHelper.GetVideo("reward_dailyBonus", isSuccess => { GetReward(index, dailyBonusItem); });
|
||||
}
|
||||
}
|
||||
|
||||
public void GetReward(int index, DailyBonusItem dailyBonusItem)
|
||||
{
|
||||
Audio.Instance.PlayDynamicEffect("dailyBonus_collect");
|
||||
|
||||
var startPosition = ui.list_sign.LocalToRoot(itemLst[index].position, GRoot.inst) +
|
||||
itemLst[index].size / 2;
|
||||
|
||||
if (dailyBonusItem.isDouble)
|
||||
{
|
||||
GameHelper.GetRewardExtra(dailyBonusItem.id, (decimal)dailyBonusItem.quantity,
|
||||
dailyBonusItem.cont_index, null, startPosition);
|
||||
}
|
||||
else
|
||||
{
|
||||
GameHelper.GetRewardOnly1(dailyBonusItem.id, (decimal)dailyBonusItem.quantity, RewardOrigin.SignIn,
|
||||
null, startPosition);
|
||||
}
|
||||
|
||||
|
||||
dailyBonusItem.IsCollect = true;
|
||||
PreferencesMgr.Instance.SaveDailyBonusItemLst();
|
||||
RefreshUI();
|
||||
}
|
||||
|
||||
private void UpdateTime()
|
||||
{
|
||||
ui.text_time.text = "Next in:" + model.GetDailyDonusDayTime();
|
||||
}
|
||||
|
||||
private void RefreshUI()
|
||||
{
|
||||
UpdateTime();
|
||||
for (var i = 0; i < itemLst.Count; i++)
|
||||
{
|
||||
int index = i;
|
||||
var dailyBonus = PreferencesMgr.Instance.DailyBonusItemLst[index];
|
||||
if (index is 6 or 13)
|
||||
{
|
||||
if (GameHelper.IsGiftSwitch()) (itemLst[index] as btn_day2).gift.selectedIndex = 1;
|
||||
if (itemLst[index] is btn_day2 day)
|
||||
{
|
||||
if (dailyBonus.id == 101)
|
||||
{
|
||||
day.cont_currency.selectedIndex = btn_day2.Currency_coin;
|
||||
day.text_reward.text = $"{dailyBonus.quantity:N0}";
|
||||
}
|
||||
else
|
||||
{
|
||||
day.cont_currency.selectedIndex = btn_day2.Currency_diam;
|
||||
day.text_reward.text = $"{GameHelper.Get102Str((decimal)dailyBonus.quantity)}";
|
||||
}
|
||||
|
||||
day.text_day.text = "Day " + (index + 1);
|
||||
|
||||
if (index + 1 == model.GetDailyDonusDay())
|
||||
{
|
||||
day.cont_state.selectedIndex = btn_day2.State_yellow;
|
||||
}
|
||||
else
|
||||
{
|
||||
day.cont_state.selectedIndex = btn_day2.State_purple;
|
||||
}
|
||||
|
||||
if (dailyBonus.IsCollect)
|
||||
{
|
||||
day.cont_collect.selectedIndex = btn_day2.Collect_collected;
|
||||
day.cont_state.selectedIndex = btn_day2.State_purple;
|
||||
}
|
||||
else
|
||||
{
|
||||
day.cont_collect.selectedIndex = index + 1 < model.GetDailyDonusDay()
|
||||
? btn_day2.Collect_miss
|
||||
: btn_day2.Collect_uncollect;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GameHelper.IsGiftSwitch()) (itemLst[index] as btn_day).gift.selectedIndex = 1;
|
||||
if (itemLst[index] is btn_day day)
|
||||
{
|
||||
if (dailyBonus.id == 101)
|
||||
{
|
||||
day.cont_currency.selectedIndex = btn_day.Currency_coin;
|
||||
day.text_reward.text = $"{dailyBonus.quantity:N0}";
|
||||
}
|
||||
else
|
||||
{
|
||||
day.cont_currency.selectedIndex = btn_day.Currency_diam;
|
||||
day.text_reward.text = $"{GameHelper.Get102Str((decimal)dailyBonus.quantity):N}";
|
||||
}
|
||||
|
||||
day.text_day.text = "Day " + (index + 1);
|
||||
day.cont_color.selectedIndex = index + 1 == model.GetDailyDonusDay()
|
||||
? btn_day2.State_yellow
|
||||
: btn_day2.State_purple;
|
||||
|
||||
if (dailyBonus.IsCollect)
|
||||
{
|
||||
day.cont_collect.selectedIndex = btn_day2.Collect_collected;
|
||||
day.cont_color.selectedIndex = btn_day2.State_purple;
|
||||
}
|
||||
else
|
||||
{
|
||||
day.cont_collect.selectedIndex = index + 1 < model.GetDailyDonusDay()
|
||||
? btn_day2.Collect_miss
|
||||
: btn_day2.Collect_uncollect;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bf058bbde05442a78ee3cc1f4c7c27fa
|
||||
timeCreated: 1679557304
|
||||
@@ -0,0 +1,71 @@
|
||||
using BingoBrain.Core;
|
||||
using BingoBrain.HotFix;
|
||||
|
||||
namespace BingoBrain
|
||||
{
|
||||
public class JTodUICtrl : BaseUICtrl
|
||||
{
|
||||
private JTodUI ui;
|
||||
private JTodModel model;
|
||||
|
||||
private uint openUIMsg = SkinInfo.JTodUI_Open;
|
||||
private uint closeUIMsg = SkinInfo.JTodUI_Close;
|
||||
|
||||
#region 生命周期
|
||||
|
||||
protected override void OnInit()
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnDispose()
|
||||
{
|
||||
}
|
||||
|
||||
public override void OpenUI(object args = null)
|
||||
{
|
||||
if (ui == null)
|
||||
{
|
||||
ui = new JTodUI(this);
|
||||
ui.Open(args);
|
||||
}
|
||||
}
|
||||
|
||||
public override void CloseUI(object args = null)
|
||||
{
|
||||
if (ui != null && !ui.isClose)
|
||||
{
|
||||
ui.Close();
|
||||
}
|
||||
|
||||
ui = null;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 消息
|
||||
|
||||
public override uint GetOpenUIMsg(string uiName)
|
||||
{
|
||||
return openUIMsg;
|
||||
}
|
||||
|
||||
public override uint GetCloseUIMsg(string uiName)
|
||||
{
|
||||
return closeUIMsg;
|
||||
}
|
||||
|
||||
protected override void AddListener()
|
||||
{
|
||||
uiCtrlDispatcher.AddListener(openUIMsg, OpenUI);
|
||||
uiCtrlDispatcher.AddListener(closeUIMsg, CloseUI);
|
||||
}
|
||||
|
||||
protected override void RemoveListener()
|
||||
{
|
||||
uiCtrlDispatcher.RemoveListener(openUIMsg, OpenUI);
|
||||
uiCtrlDispatcher.RemoveListener(closeUIMsg, CloseUI);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 149eb57df36646c8b747efde695d012f
|
||||
timeCreated: 1679557305
|
||||
Reference in New Issue
Block a user