feat:1、添加项目
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 77c9a25febe54dffbb6afade123b3a42
|
||||
timeCreated: 1692267362
|
||||
@@ -0,0 +1,226 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace BallKingdomCrush
|
||||
{
|
||||
public class ConsumeSystem : BaseSystem
|
||||
{
|
||||
public ConsumeSystem(bool isAutoInit = true)
|
||||
{
|
||||
if (isAutoInit)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed override void Init()
|
||||
{
|
||||
base.Init();
|
||||
|
||||
AddListener();
|
||||
}
|
||||
|
||||
private void AddListener()
|
||||
{
|
||||
CtrlDispatcher.Instance.AddListener(CtrlMsg.ConsumeResources, OnConsumeResources);
|
||||
}
|
||||
|
||||
private void OnConsumeResources(object obj)
|
||||
{
|
||||
ConsumeVal consumeVal = (ConsumeVal)obj;
|
||||
|
||||
int consumeSuccessCount = 0;
|
||||
for (var index = 0; index < consumeVal.ItemId.Count; index++)
|
||||
{
|
||||
var item = consumeVal.ItemId[index];
|
||||
var itemValue = consumeVal.ItemVal[index];
|
||||
switch (item)
|
||||
{
|
||||
case 101:
|
||||
if (itemValue <= DataMgr.Coin.Value)
|
||||
{
|
||||
consumeSuccessCount++;
|
||||
}
|
||||
else
|
||||
{
|
||||
GameHelper.ShowTips("No enough", true);
|
||||
}
|
||||
|
||||
break;
|
||||
case 102:
|
||||
if (itemValue <= DataMgr.Ticket.Value)
|
||||
{
|
||||
consumeSuccessCount++;
|
||||
}
|
||||
else
|
||||
{
|
||||
GameHelper.ShowTips("No enough", true);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (consumeVal.isConsume)
|
||||
{
|
||||
if (consumeSuccessCount == consumeVal.ItemId.Count)
|
||||
{
|
||||
for (var index = 0; index < consumeVal.ItemId.Count; index++)
|
||||
{
|
||||
var item = consumeVal.ItemId[index];
|
||||
var itemValue = consumeVal.ItemVal[index];
|
||||
switch (item)
|
||||
{
|
||||
case 101:
|
||||
if (itemValue <= DataMgr.Coin.Value)
|
||||
{
|
||||
DataMgr.Coin.Value -= (int)itemValue;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 102:
|
||||
if (itemValue <= DataMgr.Ticket.Value)
|
||||
{
|
||||
DataMgr.Ticket.Value -= itemValue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
consumeVal.onfinish?.Invoke(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
consumeVal.onfinish?.Invoke(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
consumeVal.onfinish?.Invoke(consumeSuccessCount == consumeVal.ItemId.Count);
|
||||
}
|
||||
|
||||
consumeVal.Release();
|
||||
}
|
||||
|
||||
#region 消耗资源
|
||||
|
||||
public static void Consume(int itemId, int itemNum, Action<bool> onCompleted = null, bool isConsume = true)
|
||||
{
|
||||
ConsumeVal consumeVal = ConsumeVal.Get(itemId, itemNum, onCompleted);
|
||||
consumeVal.isConsume = isConsume;
|
||||
CtrlDispatcher.Instance.Dispatch(CtrlMsg.ConsumeResources, consumeVal);
|
||||
}
|
||||
|
||||
public static void Consume(int itemId, decimal itemNum, Action<bool> onCompleted = null, bool isConsume = true)
|
||||
{
|
||||
ConsumeVal consumeVal = ConsumeVal.Get(itemId, itemNum, onCompleted);
|
||||
consumeVal.isConsume = isConsume;
|
||||
CtrlDispatcher.Instance.Dispatch(CtrlMsg.ConsumeResources, consumeVal);
|
||||
}
|
||||
|
||||
|
||||
public static void Consume(int[] itemIds, int[] itemNums, Action<bool> onCompleted = null,
|
||||
bool isConsume = true)
|
||||
{
|
||||
ConsumeVal consumeVal = ConsumeVal.Get();
|
||||
consumeVal.onfinish = onCompleted;
|
||||
for (int i = 0; i < itemIds.Length; i++)
|
||||
{
|
||||
consumeVal.AddConsume(itemIds[i], itemNums[i]);
|
||||
}
|
||||
|
||||
consumeVal.isConsume = isConsume;
|
||||
CtrlDispatcher.Instance.Dispatch(CtrlMsg.ConsumeResources, consumeVal);
|
||||
}
|
||||
|
||||
public static void Consume(int[] itemIds, decimal[] itemNums, Action<bool> onCompleted = null,
|
||||
bool isConsume = true)
|
||||
{
|
||||
ConsumeVal consumeVal = ConsumeVal.Get();
|
||||
consumeVal.onfinish = onCompleted;
|
||||
for (int i = 0; i < itemIds.Length; i++)
|
||||
{
|
||||
consumeVal.AddConsume(itemIds[i], itemNums[i]);
|
||||
}
|
||||
|
||||
consumeVal.isConsume = isConsume;
|
||||
CtrlDispatcher.Instance.Dispatch(CtrlMsg.ConsumeResources, consumeVal);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public static void CheckItem(int itemId, int itemNum, Action<bool> onCompleted = null)
|
||||
{
|
||||
Consume(itemId, itemNum, onCompleted, false);
|
||||
}
|
||||
|
||||
public static void CheckItem(int itemId, decimal itemNum, Action<bool> onCompleted = null)
|
||||
{
|
||||
Consume(itemId, itemNum, onCompleted, false);
|
||||
}
|
||||
|
||||
public static void CheckItem(int[] itemId, int[] itemNum, Action<bool> onCompleted = null)
|
||||
{
|
||||
Consume(itemId, itemNum, onCompleted, false);
|
||||
}
|
||||
|
||||
public static void CheckItem(int[] itemId, decimal[] itemNum, Action<bool> onCompleted = null)
|
||||
{
|
||||
Consume(itemId, itemNum, onCompleted, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class ConsumeVal
|
||||
{
|
||||
private static ObjectPool<ConsumeVal> _pool = new ObjectPool<ConsumeVal>();
|
||||
|
||||
public static ConsumeVal Get()
|
||||
{
|
||||
ConsumeVal val = _pool.Get();
|
||||
return val;
|
||||
}
|
||||
|
||||
public static ConsumeVal Get(int id, decimal sum)
|
||||
{
|
||||
return Get(id, sum);
|
||||
}
|
||||
|
||||
public static ConsumeVal Get(int id, decimal sum, Action<bool> finish = null)
|
||||
{
|
||||
ConsumeVal val = _pool.Get();
|
||||
val.AddConsume(id, sum);
|
||||
val.onfinish = finish;
|
||||
return val;
|
||||
}
|
||||
|
||||
|
||||
public void Release()
|
||||
{
|
||||
ItemId.Clear();
|
||||
ItemVal.Clear();
|
||||
isConsume = true;
|
||||
onfinish = null;
|
||||
_pool.Release(this);
|
||||
}
|
||||
|
||||
public ConsumeVal()
|
||||
{
|
||||
}
|
||||
|
||||
public Action<bool> onfinish;
|
||||
|
||||
public List<int> ItemId = new List<int>();
|
||||
public List<decimal> ItemVal = new List<decimal>();
|
||||
|
||||
public bool isConsume = true;
|
||||
|
||||
public void AddConsume(int id, decimal sum)
|
||||
{
|
||||
ItemId.Add(id);
|
||||
ItemVal.Add(sum);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fcd01defe47f4c65b155e8edb148d1cc
|
||||
timeCreated: 1692785015
|
||||
@@ -0,0 +1,277 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using IgnoreOPS;
|
||||
using SGModule.NetKit;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BallKingdomCrush
|
||||
{
|
||||
public class GameDataSystem : BaseSystem
|
||||
{
|
||||
public Action UpdateSecondEvent;
|
||||
|
||||
private Action onChangeDollar;
|
||||
|
||||
private Action onChangeGiftSwitch;
|
||||
|
||||
private long _uid;
|
||||
|
||||
public GameDataSystem(bool isAutoInit = true)
|
||||
{
|
||||
if (isAutoInit)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed override void Init()
|
||||
{
|
||||
base.Init();
|
||||
AddListener();
|
||||
}
|
||||
|
||||
private void AddListener()
|
||||
{
|
||||
CtrlDispatcher.Instance.AddListener(CtrlMsg.Game_StartBefore, InitPreferences);
|
||||
PreferencesDispatcher<decimal>.Instance.AddListener(DataMsg.currency101, OnChange101);
|
||||
PreferencesDispatcher<float>.Instance.AddListener(DataMsg.playReawrd111, OnChange111);
|
||||
CtrlDispatcher.Instance.AddListener(CtrlMsg.GameNewDays, NewDay);
|
||||
CtrlDispatcher.Instance.AddListener(CtrlMsg.Module_GiftSwitchChange, OnChangeGiftSwitch);
|
||||
GameDispatcher.Instance.AddListener(GameMsg.RefreshADTask, RefreshADTaskData);
|
||||
CtrlDispatcher.Instance.AddListener(CtrlMsg.WatchVideoFinish, AddWatchVideo);
|
||||
CtrlDispatcher.Instance.AddListener(CtrlMsg.WatchIntVideoFinish, AddIntWatchVideo);
|
||||
|
||||
PreferencesDispatcher<bool>.Instance.AddListener(DataMsg.isShowRewardFly101, OnChangeRewardFly101);
|
||||
PreferencesDispatcher<bool>.Instance.AddListener(DataMsg.isShowRewardFly111, OnChangeRewardFly111);
|
||||
GameDispatcher.Instance.AddListener(GameMsg.ProcessReward, OnGetReward);
|
||||
GameDispatcher.Instance.AddListener(GameMsg.RefreshMakeupData, OnRefreshMakeupData);
|
||||
|
||||
}
|
||||
|
||||
private void OnChangeGiftSwitch(object obj)
|
||||
{
|
||||
onChangeGiftSwitch?.Invoke();
|
||||
}
|
||||
|
||||
|
||||
private void InitPreferences(object obj)
|
||||
{
|
||||
if (DataMgr.Coin.Value == -1)
|
||||
{
|
||||
DataMgr.Coin.Value = 0;
|
||||
}
|
||||
|
||||
if (DataMgr.Ticket.Value == -1)
|
||||
{
|
||||
DataMgr.Ticket.Value = 0;
|
||||
}
|
||||
|
||||
if (!GameHelper.IsContinuousSignIn())
|
||||
{
|
||||
DataMgr.SignState.Value.Clear();
|
||||
}
|
||||
|
||||
if (DataMgr.PlayerName.Value.IsNullOrWhiteSpace())
|
||||
{
|
||||
if (GameHelper.GetLoginModel() != null)
|
||||
{
|
||||
DataMgr.PlayerName.Value = GameHelper.GetLoginModel().InviteCode;
|
||||
}
|
||||
}
|
||||
|
||||
DataMgr.IsShowRewardFly101.Value = false;
|
||||
DataMgr.IsShowRewardFly102.Value = false;
|
||||
|
||||
|
||||
CheckMakeupTaskData();
|
||||
|
||||
|
||||
DataMgr.IsLastH5Tab.Value = true;
|
||||
|
||||
|
||||
CommonHelper.CheckAdTimes();
|
||||
|
||||
|
||||
_uid = LoginKit.Instance.LoginModel.Uid;
|
||||
}
|
||||
|
||||
|
||||
private void OnRefreshMakeupData(object obj)
|
||||
{
|
||||
AddMakeupTaskData();
|
||||
}
|
||||
|
||||
|
||||
private void CheckMakeupTaskData()
|
||||
{
|
||||
|
||||
SaveData.SaveDataFunc();
|
||||
}
|
||||
|
||||
private void CheckSpeedUpTaskData(int type = 1)
|
||||
{
|
||||
if (!GameHelper.IsGiftSwitch())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
public void AddMakeupTaskData()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void OnChange101(ChangeValue<decimal> obj)
|
||||
{
|
||||
var val = obj.newValue - obj.oldValue;
|
||||
if (val > 0)
|
||||
{
|
||||
DataMgr.MaxCurrency101.Value += (int)val;
|
||||
}
|
||||
|
||||
if (!DataMgr.IsShowRewardFly101.Value)
|
||||
{
|
||||
GameDispatcher.Instance.Dispatch(GameMsg.Update101Completed);
|
||||
}
|
||||
|
||||
onChangeDollar?.Invoke();
|
||||
}
|
||||
|
||||
|
||||
private void OnChange111(ChangeValue<float> obj)
|
||||
{
|
||||
if (!DataMgr.IsShowRewardFly111.Value)
|
||||
{
|
||||
GameDispatcher.Instance.Dispatch(GameMsg.Update111Completed);
|
||||
}
|
||||
}
|
||||
|
||||
private void NewDay(object obj)
|
||||
{
|
||||
DataMgr.IsShowOpenReward.Value = true;
|
||||
}
|
||||
|
||||
private void RefreshADTaskData(object obj = null)
|
||||
{
|
||||
}
|
||||
private void AddIntWatchVideo(object obj = null)
|
||||
{
|
||||
if (DataMgr.MakeupTaskHistory.Value.Count > 0)
|
||||
{
|
||||
CheckSpeedUpTaskData();
|
||||
}
|
||||
}
|
||||
private void AddWatchVideo(object obj = null)
|
||||
{
|
||||
DataMgr.VideoWatchCount.Value++;
|
||||
GameDispatcher.Instance.Dispatch(GameMsg.RefreshRedDot);
|
||||
|
||||
int adNums = AdExchangeManager.Instance.GetLookRewardADNum();
|
||||
adNums++;
|
||||
AdExchangeManager.Instance.SetLookRewardADNum(adNums);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void OnChangeRewardFly101(ChangeValue<bool> obj)
|
||||
{
|
||||
var oldValue = obj.oldValue;
|
||||
var newValue = obj.newValue;
|
||||
|
||||
InitChangeRewardFly(101, oldValue, newValue);
|
||||
}
|
||||
|
||||
private void OnChangeRewardFly111(ChangeValue<bool> obj)
|
||||
{
|
||||
var oldValue = obj.oldValue;
|
||||
var newValue = obj.newValue;
|
||||
|
||||
InitChangeRewardFly(111, oldValue, newValue);
|
||||
}
|
||||
|
||||
private void InitChangeRewardFly(int id, bool oldValue, bool newValue)
|
||||
{
|
||||
if (oldValue)
|
||||
{
|
||||
if (newValue)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case 101:
|
||||
GameDispatcher.Instance.Dispatch(GameMsg.Update101Completed);
|
||||
break;
|
||||
case 102:
|
||||
GameDispatcher.Instance.Dispatch(GameMsg.Update102Completed);
|
||||
break;
|
||||
case 111:
|
||||
GameDispatcher.Instance.Dispatch(GameMsg.Update111Completed);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (newValue)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void OnGetReward(object obj)
|
||||
{
|
||||
if (obj is RewardData rewardModel)
|
||||
{
|
||||
foreach (var rewardData in rewardModel.GetRewardDataList())
|
||||
{
|
||||
ProcessData(rewardData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void ProcessData(RewardSingleData rewardSingleData)
|
||||
{
|
||||
if (rewardSingleData.origin == RewardOrigin.None)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch (rewardSingleData.id)
|
||||
{
|
||||
case 101:
|
||||
{
|
||||
var roomTicket = DataMgr.Coin.Value;
|
||||
roomTicket += (int)rewardSingleData.GetTotalValue();
|
||||
|
||||
DataMgr.Coin.Value = roomTicket;
|
||||
}
|
||||
break;
|
||||
case 102:
|
||||
{
|
||||
var dollar = DataMgr.Ticket.Value;
|
||||
dollar += rewardSingleData.GetTotalValue();
|
||||
|
||||
DataMgr.Ticket.Value = dollar;
|
||||
break;
|
||||
}
|
||||
case 111:
|
||||
{
|
||||
var dollar = DataMgr.PlayReawrd111.Value;
|
||||
dollar += rewardSingleData.GetTotalValue();
|
||||
|
||||
DataMgr.PlayReawrd111.Value = dollar;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b33f1a409b61479e9b014ab951bbff47
|
||||
timeCreated: 1692256149
|
||||
@@ -0,0 +1,206 @@
|
||||
using DG.Tweening;
|
||||
using BallKingdomCrush;
|
||||
using UnityEngine;
|
||||
|
||||
public class RewardSystem : BaseSystem
|
||||
{
|
||||
public RewardSystem(bool isAutoInit = true)
|
||||
{
|
||||
if (isAutoInit)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed override void Init()
|
||||
{
|
||||
base.Init();
|
||||
AddListener();
|
||||
}
|
||||
|
||||
private void AddListener()
|
||||
{
|
||||
GameDispatcher.Instance.AddListener(GameMsg.GetReward, OnGetReward);
|
||||
}
|
||||
|
||||
|
||||
private void OnGetReward(object obj)
|
||||
{
|
||||
if (!(obj is RewardData rewardData))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (IsRewardDialog(rewardData))
|
||||
{
|
||||
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.RewardUI_Open, rewardData);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IsRewardNumber(rewardData))
|
||||
{
|
||||
rewardData.OnCompleted(true);
|
||||
GameDispatcher.Instance.Dispatch(GameMsg.ProcessReward, rewardData);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetReward(rewardData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static bool IsRewardFly(RewardData rewardData)
|
||||
{
|
||||
return (RewardDisplayType.RewardFly & rewardData.displayType) == RewardDisplayType.RewardFly;
|
||||
}
|
||||
|
||||
|
||||
public static bool IsRewardValueChange(RewardData rewardData)
|
||||
{
|
||||
return (RewardDisplayType.ValueChange & rewardData.displayType) == RewardDisplayType.ValueChange;
|
||||
}
|
||||
|
||||
|
||||
public static bool IsRewardNumber(RewardData rewardData)
|
||||
{
|
||||
return (RewardDisplayType.Number & rewardData.displayType) == RewardDisplayType.Number;
|
||||
}
|
||||
|
||||
|
||||
public static bool IsRewardDialog(RewardData rewardData)
|
||||
{
|
||||
return (RewardDisplayType.Dialog & rewardData.displayType) == RewardDisplayType.Dialog;
|
||||
}
|
||||
|
||||
|
||||
public static void GetReward(RewardData rewardData)
|
||||
{
|
||||
PlayReward(rewardData);
|
||||
GameDispatcher.Instance.Dispatch(GameMsg.ProcessReward, rewardData);
|
||||
}
|
||||
|
||||
private static Tween _tween;
|
||||
|
||||
|
||||
private static void PlayReward(RewardData rewardData)
|
||||
{
|
||||
if (rewardData == null) return;
|
||||
var completed = 0;
|
||||
foreach (var rewardSingleData in rewardData.GetRewardDataList())
|
||||
{
|
||||
var id = rewardSingleData.id;
|
||||
var sum = rewardSingleData.value;
|
||||
|
||||
if (sum <= 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
var isValueChange = IsRewardValueChange(rewardData);
|
||||
if (isValueChange)
|
||||
{
|
||||
if (rewardSingleData.endPosition == Vector2.zero && id is 101 or 102)
|
||||
{
|
||||
// if (!UIManager.Instance.IsExistUI(UIConst.H5UI))
|
||||
// {
|
||||
if (_tween is { active: true })
|
||||
{
|
||||
_tween?.Kill();
|
||||
}
|
||||
|
||||
GameHelper.OnRiseUI(id);
|
||||
// }
|
||||
}
|
||||
else if (id == 111)
|
||||
{
|
||||
if (_tween is { active: true })
|
||||
{
|
||||
_tween?.Kill();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
SetRewardValueChangeState(id, true);
|
||||
}
|
||||
|
||||
|
||||
if (!rewardSingleData.IsCanFly())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
var isNeedFly = IsRewardFly(rewardData);
|
||||
|
||||
var rewardDisplayModel = new RewardDisplayData(rewardSingleData)
|
||||
{
|
||||
isSingle = rewardData.isSingle,
|
||||
isPlayAudio = true,
|
||||
isNeedFly = isNeedFly,
|
||||
isNeedValueChange = isValueChange,
|
||||
audioName = AudioConst.CoinFly
|
||||
};
|
||||
|
||||
rewardDisplayModel.SetUpdate(changeValue => { OnChangeValue(id, changeValue); });
|
||||
rewardDisplayModel.SetUpdateComplete(() =>
|
||||
{
|
||||
completed++;
|
||||
if (isValueChange)
|
||||
{
|
||||
SetRewardValueChangeState(id, false);
|
||||
if (id == 101)
|
||||
{
|
||||
// if (!UIManager.Instance.IsExistUI(UIConst.H5UI))
|
||||
// {
|
||||
_tween = DOVirtual.DelayedCall(0.5f,
|
||||
() => { GameHelper.OnRiseUIRecover(id, UILayerType.Normal); });
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
if (completed >= rewardData.GetRewardFlyCount())
|
||||
{
|
||||
rewardData.OnCompleted(true);
|
||||
}
|
||||
});
|
||||
|
||||
rewardSingleData.InitFlyPosition();
|
||||
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.RewardAniUI_Open, rewardDisplayModel);
|
||||
}
|
||||
}
|
||||
|
||||
private static void SetRewardValueChangeState(int id, bool isShow)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case 101:
|
||||
DataMgr.IsShowRewardFly101.Value = isShow;
|
||||
break;
|
||||
case 102:
|
||||
DataMgr.IsShowRewardFly102.Value = isShow;
|
||||
break;
|
||||
case 111:
|
||||
DataMgr.IsShowRewardFly111.Value = isShow;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private static void OnChangeValue(int id, decimal changeValue)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case 101:
|
||||
GameDispatcher.Instance.Dispatch(GameMsg.Update101, changeValue);
|
||||
break;
|
||||
case 102:
|
||||
GameDispatcher.Instance.Dispatch(GameMsg.Update102, changeValue);
|
||||
break;
|
||||
case 111:
|
||||
GameDispatcher.Instance.Dispatch(GameMsg.Update111, changeValue);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b41a4be29284494880840871bb69070a
|
||||
timeCreated: 1692696618
|
||||
@@ -0,0 +1,76 @@
|
||||
namespace BallKingdomCrush
|
||||
{
|
||||
public class WindowSystem : BaseSystem
|
||||
{
|
||||
public WindowSystem(bool isAutoInit = true)
|
||||
{
|
||||
if (isAutoInit)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
}
|
||||
|
||||
TaskSequence startGameSequence = new TaskSequence();
|
||||
TaskSequence backMainSequence = new TaskSequence();
|
||||
|
||||
public sealed override void Init()
|
||||
{
|
||||
base.Init();
|
||||
|
||||
AddListener();
|
||||
}
|
||||
|
||||
private void AddListener()
|
||||
{
|
||||
CtrlDispatcher.Instance.AddOnceListener(CtrlMsg.Game_Start, StartGame);
|
||||
GameDispatcher.Instance.AddListener(GameMsg.BackMainScene, BackMain);
|
||||
}
|
||||
|
||||
private void StartGame(object obj)
|
||||
{
|
||||
startGameSequence.Clear();
|
||||
|
||||
|
||||
|
||||
if (startGameSequence.Count == 0)
|
||||
{
|
||||
End();
|
||||
}
|
||||
else
|
||||
{
|
||||
startGameSequence.Run();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void End()
|
||||
{
|
||||
}
|
||||
|
||||
private bool haveBackMain = false;
|
||||
|
||||
private void BackMain(object obj)
|
||||
{
|
||||
if (!true)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
backMainSequence.Clear();
|
||||
haveBackMain = true;
|
||||
backMainSequence.Run();
|
||||
}
|
||||
|
||||
private void AddRateUs(TaskSequence backMainSequence)
|
||||
{
|
||||
bool isAdd = 5 == DataMgr.GameOfCount.Value;
|
||||
|
||||
backMainSequence.Add(isAdd, (procedure) =>
|
||||
{
|
||||
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.RateUsDialogUI_Open);
|
||||
UICtrlDispatcher.Instance.AddOnceListener(UICtrlMsg.RateUsDialogUI_Close,
|
||||
(e) => { procedure.InvokeComplete(); });
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1b4c0d23d2744f868b80f5ea89b2bddf
|
||||
timeCreated: 1692848262
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9b8a1ab8e5a64e3f88ab5bca879f13d6
|
||||
timeCreated: 1692267374
|
||||
@@ -0,0 +1,227 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using IgnoreOPS;
|
||||
using SGModule.Common.Extensions;
|
||||
using SGModule.Common.Helper;
|
||||
using SGModule.ConfigLoader;
|
||||
using SGModule.NetKit;
|
||||
using UnityEngine;
|
||||
using CommonModel = IgnoreOPS.CommonModel;
|
||||
|
||||
namespace BallKingdomCrush
|
||||
{
|
||||
public class ConfigSystem : BaseSystem
|
||||
{
|
||||
public static string web_through_str;
|
||||
|
||||
public ConfigSystem(bool isAutoInit = true)
|
||||
{
|
||||
if (isAutoInit)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed override void Init()
|
||||
{
|
||||
base.Init();
|
||||
AddListener();
|
||||
}
|
||||
|
||||
private void AddListener()
|
||||
{
|
||||
NetworkDispatcher.Instance.AddListener(NetworkMsg.GetConfig, OnGetConfig);
|
||||
}
|
||||
|
||||
private void RemoveListener()
|
||||
{
|
||||
NetworkDispatcher.Instance.RemoveListener(NetworkMsg.GetConfig, OnGetConfig);
|
||||
}
|
||||
|
||||
private void OnGetConfig(object obj)
|
||||
{
|
||||
TrackKit.TrackLoginFunnel(LoginFunnelEventType.LoadBegin); //加载开始打点
|
||||
|
||||
var loginModel = LoginKit.Instance.LoginModel;
|
||||
Debug.Log($"服务器传过来的配置表:{loginModel.Setting}");
|
||||
ConfigLoader.Instance.Init(new ConfigInitOptions
|
||||
{
|
||||
Setting = loginModel.Setting,
|
||||
CdnUrl = loginModel.CdnURL,
|
||||
OnComplete = state =>
|
||||
{
|
||||
Debug.Log($"配置加载状态{state}");
|
||||
if (state == ConfigLoaderState.Successful)
|
||||
{
|
||||
ReloadConfig();
|
||||
}
|
||||
},
|
||||
OnError = (errorName, message) => { Debug.LogError($"配置解析错误 {errorName} 错误信息:{message}"); },
|
||||
OnHandleUnmarkedConfig = ParseGameConfig
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 重新加载配置
|
||||
/// </summary>
|
||||
/// <param name="json"></param>
|
||||
|
||||
private void ReloadConfig()
|
||||
{
|
||||
var CdnURL = "https://asserts.minskyfun.top";
|
||||
|
||||
TrackKit.TrackLoginFunnel(LoginFunnelEventType.LoadFinish); //加载完成打点
|
||||
|
||||
ParseGameConfig();
|
||||
TextureHelper.imgUrl = CdnURL + "/" + GetConfigResVersion() + "/";
|
||||
LiveVideoManager.videoBaseUrl = CdnURL + "/" + GetConfigResVersion() + "/";
|
||||
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.NetLoadingUI_Close);
|
||||
AppDispatcher.Instance.Dispatch(AppMsg.LoginInit);
|
||||
CtrlDispatcher.Instance.Dispatch(CtrlMsg.Game_StartBefore);
|
||||
SaveingPotHelper.ResetHistory();
|
||||
}
|
||||
|
||||
|
||||
#region 游戏配置
|
||||
|
||||
private void ParseGameConfig()
|
||||
{
|
||||
var gameConfigModel = new GameConfigModel();
|
||||
foreach (var key in ConfigLoader.Instance.GetJsonKeys())
|
||||
{
|
||||
if (!key.StartsWith("GameBoard"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// 提取 boardIndex
|
||||
var boardIndex = 1;
|
||||
var parts = key.Split('_');
|
||||
if (parts.Length > 1 && int.TryParse(parts[1], out var parsed))
|
||||
{
|
||||
boardIndex = parsed;
|
||||
}
|
||||
|
||||
// 获取 json 并反序列化
|
||||
if (ConfigLoader.Instance.TryGetJsonValue(key, out var gameboardJson))
|
||||
{
|
||||
try
|
||||
{
|
||||
var gameBoards = gameboardJson.As<List<GameBoard>>();
|
||||
if (gameBoards != null)
|
||||
{
|
||||
gameConfigModel.game_conf[boardIndex] = gameBoards;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ConfigLoader.Warning($"GameBoard 配置 {key} 反序列化为空");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.ConfigLoader.Error($"GameBoard 配置 {key} 反序列化失败: {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ConfigLoader.Instance.AddConfig(gameConfigModel);
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
public static CommonModel GetCommonConf()
|
||||
{
|
||||
return ConfigLoader.Instance.GetConfig<CommonModel>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns>true:非自然 false:自然</returns>
|
||||
private static bool IsOrganic()
|
||||
{
|
||||
bool b = false;
|
||||
|
||||
if (GameHelper.IsGiftSwitch())
|
||||
{
|
||||
if (SuperApplication.Instance.attribution == "organic")
|
||||
{
|
||||
b = GetCommonConf().non == 1;
|
||||
}
|
||||
}
|
||||
// Debug.Log($"上传---------开关:{GetCommonConf().non}");
|
||||
|
||||
Debug.Log($"下载---------开关:{b}");
|
||||
return b;
|
||||
}
|
||||
|
||||
public static string GetConfigResVersion()
|
||||
{
|
||||
return IsOrganic() ? GetCommonConf().ResVersion1 : GetCommonConf().ResVersion;
|
||||
}
|
||||
|
||||
public static List<T> GetConfig<T>() where T : class
|
||||
{
|
||||
return ConfigLoader.Instance.GetConfig<List<T>>() ?? new List<T>();
|
||||
}
|
||||
|
||||
private static List<T> GetConfigWithOrganicFallback<T, TOrganic>() where T : class
|
||||
{
|
||||
if (IsOrganic())
|
||||
{
|
||||
var organicConfig = ConfigLoader.Instance.GetConfig<List<TOrganic>>();
|
||||
if (organicConfig != null)
|
||||
{
|
||||
var json = Newtonsoft.Json.JsonConvert.SerializeObject(organicConfig);
|
||||
return Newtonsoft.Json.JsonConvert.DeserializeObject<List<T>>(json);
|
||||
}
|
||||
}
|
||||
|
||||
return GetConfig<T>();
|
||||
}
|
||||
|
||||
public static List<Live> GetLiveConfig()
|
||||
{
|
||||
return GetConfigWithOrganicFallback<Live, Live_A>();
|
||||
}
|
||||
|
||||
public static List<SecretAlbums> GetSecretAlbumsConfig()
|
||||
{
|
||||
return GetConfigWithOrganicFallback<SecretAlbums, SecretAlbums_A>();
|
||||
}
|
||||
public static List<FreeImageLibrary> GetFreeImageConfig()
|
||||
{
|
||||
return GetConfigWithOrganicFallback<FreeImageLibrary, FreeImageLibrary_A>();
|
||||
}
|
||||
public static List<ADImageLibrary> GetADImageConfig()
|
||||
{
|
||||
return GetConfigWithOrganicFallback<ADImageLibrary, ADImageLibrary_A>();
|
||||
}
|
||||
|
||||
public static List<SpecialImageLibrary> GetSpecialImageConfig()
|
||||
{
|
||||
return GetConfigWithOrganicFallback<SpecialImageLibrary, SpecialImageLibrary_A>();
|
||||
}
|
||||
|
||||
public static List<VIPImageLibrary> GetVIPImageConfig()
|
||||
{
|
||||
return GetConfigWithOrganicFallback<VIPImageLibrary, VIPImageLibrary_A>();
|
||||
}
|
||||
|
||||
public static List<LevelUnlock> GetLevelUnlockConfig()
|
||||
{
|
||||
return GetConfigWithOrganicFallback<LevelUnlock, LevelUnlock_A>();
|
||||
}
|
||||
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
RemoveListener();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3a3bd721f95842948573aea8599cd364
|
||||
timeCreated: 1692603665
|
||||
@@ -0,0 +1,102 @@
|
||||
using System;
|
||||
using IgnoreOPS;
|
||||
using SGModule.Common.Extensions;
|
||||
using SGModule.Common.Helper;
|
||||
using SGModule.NetKit;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BallKingdomCrush {
|
||||
public class LoginSystem : BaseSystem {
|
||||
private int loginCount = 0;
|
||||
|
||||
private bool _isLogin = false;
|
||||
|
||||
|
||||
private TimerTask timerTask = null;
|
||||
|
||||
public LoginSystem(bool isAutoInit = true) {
|
||||
if (isAutoInit) {
|
||||
Init();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed override void Init() {
|
||||
base.Init();
|
||||
InitData();
|
||||
AddListener();
|
||||
}
|
||||
|
||||
private void InitData() {
|
||||
}
|
||||
|
||||
private void AddListener() {
|
||||
NetworkDispatcher.Instance.AddListener(NetworkMsg.Login, RequestLogin);
|
||||
}
|
||||
|
||||
private void RemoveListener() {
|
||||
NetworkDispatcher.Instance.RemoveListener(NetworkMsg.Login, RequestLogin);
|
||||
}
|
||||
|
||||
private void RequestLogin(object obj = null) {
|
||||
|
||||
// if (!GameHelper.IsConnect())
|
||||
// {
|
||||
// LoginFail();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
if (_isLogin) return;
|
||||
_isLogin = true;
|
||||
|
||||
TrackKit.TrackLoginFunnel(LoginFunnelEventType.LoginSend);
|
||||
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.NetworkErrorTipsUI_Open);
|
||||
Log.Info("login request", $"attribution: {SuperApplication.Instance.attribution}, haveSimCard: {NetworkManager.haveSimCard}");
|
||||
LoginKit.Instance.LoginRequest(SuperApplication.Instance.attribution.ToLower(), NetworkManager.haveSimCard, (isSuccess, loginData) => {
|
||||
TrackKit.TrackLoginFunnel(LoginFunnelEventType.LoginRecv, isSuccess ? "success" : "fail");
|
||||
|
||||
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.NetworkErrorTipsUI_Close);
|
||||
Debug.Log($"loginData.uid======={loginData.Uid}");
|
||||
|
||||
if (isSuccess)
|
||||
{
|
||||
Debug.Log($"loginData.CdnURL======={loginData.CdnURL}");
|
||||
// AB上传 BI
|
||||
// BIManager.Instance.TrackABConfig(loginData.IsMagic ? 30 : 15);
|
||||
|
||||
// loginData.CdnURL = "https://asserts.minskyfun.top";
|
||||
|
||||
|
||||
// TextureHelper.imgUrl = loginData.CdnURL + "/encrypt/image/";
|
||||
// LiveVideoManager.videoBaseUrl = loginData.CdnURL + "/encrypt/video/";
|
||||
|
||||
DateTimeManager.Instance.SetServerCurrTimestamp(loginData.LoginTime);
|
||||
|
||||
NetworkDispatcher.Instance.Dispatch(NetworkMsg.GetPlayData);
|
||||
|
||||
// MaxADKit.SetUserID(loginData.Uid.As<string>());
|
||||
}
|
||||
else
|
||||
{
|
||||
LoginFail();
|
||||
}
|
||||
});
|
||||
// }
|
||||
}
|
||||
|
||||
private static void LoginFail()
|
||||
{
|
||||
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.NetLoadingUI_Close);
|
||||
|
||||
void OnFail() {
|
||||
NetworkDispatcher.Instance.Dispatch(NetworkMsg.Login);
|
||||
}
|
||||
|
||||
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.TipsViewUI_Open, (Action) OnFail);
|
||||
}
|
||||
|
||||
public override void Dispose() {
|
||||
base.Dispose();
|
||||
RemoveListener();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0e448e373b1b484b8918ec80a7f28448
|
||||
timeCreated: 1692267393
|
||||
@@ -0,0 +1,92 @@
|
||||
using System.Collections.Generic;
|
||||
using SGModule.NetKit;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BallKingdomCrush
|
||||
{
|
||||
public class PlayDataSystem : BaseSystem
|
||||
{
|
||||
public PlayDataSystem(bool isAutoInit = true)
|
||||
{
|
||||
if (isAutoInit)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed override void Init()
|
||||
{
|
||||
base.Init();
|
||||
|
||||
AddListener();
|
||||
}
|
||||
|
||||
private void AddListener()
|
||||
{
|
||||
NetworkDispatcher.Instance.AddListener(NetworkMsg.GetPlayData, OnRequestPlayData);
|
||||
NetworkDispatcher.Instance.AddListener(NetworkMsg.SavePlayData, OnRequestSavePlayData);
|
||||
}
|
||||
|
||||
private void RemoveListener()
|
||||
{
|
||||
NetworkDispatcher.Instance.RemoveListener(NetworkMsg.GetPlayData, OnRequestPlayData);
|
||||
NetworkDispatcher.Instance.RemoveListener(NetworkMsg.SavePlayData, OnRequestSavePlayData);
|
||||
}
|
||||
|
||||
private void OnRequestPlayData(object args)
|
||||
{
|
||||
NetApi.RequestPlayerData((isSuccess, json) => {
|
||||
Debug.Log($"barry UserData : {isSuccess}{json}");
|
||||
if (isSuccess) {
|
||||
var loginModel = LoginKit.Instance.LoginModel;
|
||||
if (loginModel.NewPlayer || loginModel.Uid != DataMgr.UserID.Value)
|
||||
{
|
||||
GameHelper.clearJsonData();
|
||||
}
|
||||
DataMgr.InitPreferences(json);
|
||||
NetworkDispatcher.Instance.Dispatch(NetworkMsg.GetConfig);
|
||||
}
|
||||
else {
|
||||
Debug.LogError($"OnRequestPlayData isError {json}");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void OnRequestSavePlayData(object obj)
|
||||
{
|
||||
if (obj != null)
|
||||
{
|
||||
var msg = obj as Dictionary<string, object>;
|
||||
|
||||
if (msg == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var version = 1L;
|
||||
if (msg.TryGetValue("data_ver", out var ver))
|
||||
{
|
||||
if (version != default)
|
||||
{
|
||||
version = (long)ver;
|
||||
}
|
||||
}
|
||||
|
||||
var data = SerializeUtil.ToJson<Dictionary<string, object>>(msg);
|
||||
|
||||
var requestData = new RequestSavePlayData
|
||||
{
|
||||
version = version,
|
||||
data = data
|
||||
};
|
||||
// NetworkKit.PostWithHeader("user/updateData", requestData);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
RemoveListener();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7b2141f8f0f64581b0f291d0ca27ece2
|
||||
timeCreated: 1692343794
|
||||
Reference in New Issue
Block a user