Files
BingoGrassland/Assets/BingoBrain/ModuleUI/Somsion/SomsionUI.cs
T

190 lines
6.3 KiB
C#
Raw Normal View History

2026-04-20 13:49:36 +08:00
using FairyGUI;
using BingoBrain.Core;
using BingoBrain.HotFix;
using FGUI.JTask;
using UnityEngine;
using Newtonsoft.Json;
using DontConfuse;
namespace BingoBrain
{
public class SomsionUI : BaseUI
{
private SomsionUICtrl ctrl;
private SomsionModel model;
private com_task ui;
public SomsionUI(SomsionUICtrl ctrl) : base(ctrl)
{
uiName = UIConst.SomsionUI;
this.ctrl = ctrl;
}
protected override void SetUIInfo(UIInfo uiInfo)
{
uiInfo.packageName = "JTask";
uiInfo.assetName = "com_task";
uiInfo.layerType = UILayerType.Popup;
uiInfo.isNeedOpenAnim = true;
uiInfo.isNeedCloseAnim = true;
uiInfo.isNeedUIMask = true;
}
#region
protected override void OnInit()
{
model = ModuleBoardk.GetModel(ModelConst.SomsionModel) as SomsionModel;
}
protected override void OnClose()
{
ui?.FadeOut();
WebviewManager.Instance.SetDarkThough(true);
}
protected override void OnBind()
{
ui = baseUI as com_task;
}
protected override void OnOpenBefore(object args)
{
WebviewManager.Instance.SetDarkThough(false);
Audio.Instance.PlayDynamicEffect("pop_open");
ui.list_task.itemRenderer = ItemRenderer;
ui.list_task.numItems = PreferencesMgr.Instance.ActiveMissions.Count;
ui.closeButton.SetClick(() =>
{
Audio.Instance.PlayDynamicEffect("button");
CtrlCloseUI();
});
RefreshTime();
Hall.Instance.UpdateSecondEvent += RefreshTime;
}
private void RefreshTime()
{
ui.text_time.text = model.GetNextReTimeStr;
}
internal void ItemRenderer(int index, GObject item)
{
com_Singletask _Singletask = item as com_Singletask;
if (GameHelper.IsGiftSwitch()) _Singletask.gift.selectedIndex = 1;
Task task = PreferencesMgr.Instance.ActiveMissions[index];
Debug.Log(JsonConvert.SerializeObject(PreferencesMgr.Instance.ActiveMissions));
TaskList taskVO = GameHelper.GetConfig<TaskListModel>().GetData(task.Id);
_Singletask.text_taskname.text = taskVO.taskName.Replace("%s", taskVO.taskNum.ToString());
string val = string.Empty;
if (task.RewardId == 101)
{
val = GameHelper.GetNoDecimalUnitStr(task.RewardSum);
}
if (task.RewardId == 102)
{
val = $"{GameHelper.Get102Str((decimal)task.RewardSum)}";
}
_Singletask.text_num.text = val;
switch (taskVO.rewardID)
{
case 101:
_Singletask.cont_currency.selectedIndex = com_Singletask.Currency_coin;
break;
case 102:
_Singletask.cont_currency.selectedIndex = com_Singletask.Currency_diam;
break;
}
// TextureHelper.GetItemIcon(taskVO.rewardID, tx => { _Singletask.loader_reward.texture = tx; });
_Singletask.cont_collect.selectedIndex = com_Singletask.Collect_none;
if (task.IsReward)
{
_Singletask.com_task_pb.TweenValue(task.MaxProgress, 0.3f);
_Singletask.com_task_pb.max = task.MaxProgress;
_Singletask.btn_task.cont_button.selectedIndex = btn_task.Button_done;
_Singletask.cont_collect.selectedIndex = 2;
}
else
{
_Singletask.com_task_pb.max = task.MaxProgress;
if (task.Progress >= task.MaxProgress)
{
_Singletask.btn_task.cont_button.selectedIndex = btn_task.Button_collect;
_Singletask.cont_collect.selectedIndex = com_Singletask.Collect_collect;
_Singletask.com_task_pb.TweenValue(task.MaxProgress, 0.3f);
_Singletask.btn_task.SetClick(() => { OnClickTaskBtn(_Singletask, task); });
}
else
{
_Singletask.btn_task.cont_button.selectedIndex = btn_task.Button_num;
_Singletask.btn_task.text_num.text = task.Progress + "/" + task.MaxProgress;
_Singletask.com_task_pb.TweenValue(task.Progress, 0.3f);
_Singletask.btn_task.SetClick(OnClickGoPlay);
}
}
}
private void OnClickTaskBtn(com_Singletask singletask, Task task)
{
Audio.Instance.PlayDynamicEffect("button");
if (task.IsReward)
{
return;
}
if (task.Progress < task.MaxProgress)
{
OnClickGoPlay();
return;
}
// 领取奖励
if (task.IsMulti)
{
GameHelper.GetRewardExtra(task.RewardId, (decimal)task.RewardSum, task.cont_index, isSuccess =>
{
if (!isSuccess)
{
gameDispatcher.Dispatch(BingoInfo.ShowGameOver);
}
});
}
else
{
GameHelper.GetRewardOnly(task.RewardId, (decimal)task.RewardSum, RewardOrigin.DailyTask);
}
if (!PreferencesMgr.Instance.FinishTaskList.Contains(task.Id))
{
PreferencesMgr.Instance.FinishTaskList.Add(task.Id);
PreferencesMgr.Instance.SaveFinishTaskList();
}
singletask.btn_task.onClick.Clear();
task.IsReward = true;
singletask.cont_collect.selectedIndex = com_Singletask.Collect_none;
singletask.btn_task.cont_button.selectedIndex = btn_task.Button_done;
PreferencesMgr.Instance.SaveActiveMissions();
}
protected override void OnOpen(object args)
{
ui?.FadeIn();
}
#endregion
private void OnClickGoPlay()
{
CtrlCloseUI();
GameDispatcher.Instance.Dispatch(BingoInfo.MainTab, 0);
}
}
}