加入很多新内容,这波一块交了
This commit is contained in:
@@ -38,6 +38,7 @@ public class dailyTaskManager : MonoBehaviour
|
||||
|
||||
private readonly List<GameObject> spawnedTaskItems = new List<GameObject>();
|
||||
private readonly Dictionary<int, Sprite> rewardSpriteByItemId = new Dictionary<int, Sprite>();
|
||||
private readonly Dictionary<int, storeItemSO> rewardStoreItemByItemId = new Dictionary<int, storeItemSO>();
|
||||
|
||||
private void Start()
|
||||
{
|
||||
@@ -157,6 +158,7 @@ public class dailyTaskManager : MonoBehaviour
|
||||
|
||||
private void OnSingleRewardClicked(string taskID)
|
||||
{
|
||||
var rewardEntry = BuildRewardEntryForTask(taskID);
|
||||
string failureMessage;
|
||||
if (!DailyTaskService.EnsureInstance().TryClaimReward(taskID, playerData, out failureMessage))
|
||||
{
|
||||
@@ -168,15 +170,57 @@ public class dailyTaskManager : MonoBehaviour
|
||||
return;
|
||||
}
|
||||
|
||||
if (rewardEntry.HasValue)
|
||||
{
|
||||
gItemGet.display(rewardEntry.Value);
|
||||
}
|
||||
|
||||
RefreshTaskUi();
|
||||
}
|
||||
|
||||
private void OnOneKeyRewardClicked()
|
||||
{
|
||||
string failureMessage;
|
||||
int claimedCount = DailyTaskService.EnsureInstance().ClaimAllAvailableRewards(playerData, out failureMessage);
|
||||
var taskService = DailyTaskService.EnsureInstance();
|
||||
var tasks = taskService.GetActiveTaskViews();
|
||||
var grantedEntries = new List<gItemGet.ItemEntry>();
|
||||
string failureMessage = string.Empty;
|
||||
int claimedCount = 0;
|
||||
|
||||
for (int i = 0; i < tasks.Count; i++)
|
||||
{
|
||||
var taskView = tasks[i];
|
||||
if (taskView == null || taskView.runtimeEntry == null || taskView.definition == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!taskView.runtimeEntry.isCompleted || taskView.runtimeEntry.isClaimed)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
string claimError;
|
||||
if (!taskService.TryClaimReward(taskView.runtimeEntry.taskID, playerData, out claimError))
|
||||
{
|
||||
if (claimedCount <= 0 && string.IsNullOrEmpty(failureMessage))
|
||||
{
|
||||
failureMessage = claimError;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
claimedCount += 1;
|
||||
grantedEntries.Add(BuildRewardEntry(taskView.definition));
|
||||
}
|
||||
|
||||
if (claimedCount <= 0)
|
||||
{
|
||||
if (string.IsNullOrEmpty(failureMessage))
|
||||
{
|
||||
failureMessage = "暂无可领取奖励";
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(failureMessage))
|
||||
{
|
||||
gNotice.warning.display(failureMessage);
|
||||
@@ -185,6 +229,11 @@ public class dailyTaskManager : MonoBehaviour
|
||||
return;
|
||||
}
|
||||
|
||||
if (grantedEntries.Count > 0)
|
||||
{
|
||||
gItemGet.display(grantedEntries);
|
||||
}
|
||||
|
||||
RefreshTaskUi();
|
||||
}
|
||||
|
||||
@@ -274,17 +323,23 @@ public class dailyTaskManager : MonoBehaviour
|
||||
private void CacheRewardSpritesFromStoreItems()
|
||||
{
|
||||
rewardSpriteByItemId.Clear();
|
||||
rewardStoreItemByItemId.Clear();
|
||||
|
||||
var rewardStoreItems = Resources.LoadAll<storeItemSO>("so/storeSO");
|
||||
for (int i = 0; i < rewardStoreItems.Length; i++)
|
||||
{
|
||||
var itemSO = rewardStoreItems[i];
|
||||
if (itemSO == null || itemSO.itemIcon == null)
|
||||
if (itemSO == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
rewardSpriteByItemId[itemSO.itemID] = itemSO.itemIcon;
|
||||
if (itemSO.itemIcon != null)
|
||||
{
|
||||
rewardSpriteByItemId[itemSO.itemID] = itemSO.itemIcon;
|
||||
}
|
||||
|
||||
rewardStoreItemByItemId[itemSO.itemID] = itemSO;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -299,6 +354,80 @@ public class dailyTaskManager : MonoBehaviour
|
||||
return rewardSpriteByItemId.TryGetValue(itemId, out sprite) ? sprite : null;
|
||||
}
|
||||
|
||||
private gItemGet.ItemEntry? BuildRewardEntryForTask(string taskID)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(taskID))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var tasks = DailyTaskService.EnsureInstance().GetActiveTaskViews();
|
||||
for (int i = 0; i < tasks.Count; i++)
|
||||
{
|
||||
var taskView = tasks[i];
|
||||
if (taskView == null || taskView.runtimeEntry == null || taskView.definition == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (string.Equals(taskView.runtimeEntry.taskID, taskID, System.StringComparison.Ordinal))
|
||||
{
|
||||
return BuildRewardEntry(taskView.definition);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private gItemGet.ItemEntry BuildRewardEntry(userTasksPool.TaskDefinition definition)
|
||||
{
|
||||
if (definition == null)
|
||||
{
|
||||
return gItemGet.Create("未知奖励", null, 1, ItemRarity.None);
|
||||
}
|
||||
|
||||
switch (definition.rewardType)
|
||||
{
|
||||
case userTasksPool.RewardType.coins:
|
||||
return gItemGet.Create("Coins", coinRewardSprite, Mathf.Max(1, definition.rewardAmount), ItemRarity.Common);
|
||||
|
||||
case userTasksPool.RewardType.expBottle:
|
||||
{
|
||||
int itemId = GetExpBottleRewardItemId(definition.rewardExpBottleKind);
|
||||
storeItemSO itemSO;
|
||||
if (rewardStoreItemByItemId.TryGetValue(itemId, out itemSO) && itemSO != null)
|
||||
{
|
||||
return gItemGet.FromStoreItem(itemSO, Mathf.Max(1, definition.rewardAmount));
|
||||
}
|
||||
|
||||
return gItemGet.Create(
|
||||
ExpBottleCatalog.GetDisplayName(definition.rewardExpBottleKind),
|
||||
GetRewardSpriteByItemId(itemId),
|
||||
Mathf.Max(1, definition.rewardAmount),
|
||||
ItemRarity.None);
|
||||
}
|
||||
|
||||
case userTasksPool.RewardType.dushMaterial:
|
||||
{
|
||||
int itemId = GetDushMaterialRewardItemId(definition.rewardDushMaterialKind);
|
||||
storeItemSO itemSO;
|
||||
if (rewardStoreItemByItemId.TryGetValue(itemId, out itemSO) && itemSO != null)
|
||||
{
|
||||
return gItemGet.FromStoreItem(itemSO, Mathf.Max(1, definition.rewardAmount));
|
||||
}
|
||||
|
||||
return gItemGet.Create(
|
||||
DushMaterialCatalog.GetDisplayName(definition.rewardDushMaterialKind),
|
||||
GetRewardSpriteByItemId(itemId),
|
||||
Mathf.Max(1, definition.rewardAmount),
|
||||
ItemRarity.None);
|
||||
}
|
||||
|
||||
default:
|
||||
return gItemGet.Create("未知奖励", null, Mathf.Max(1, definition.rewardAmount), ItemRarity.None);
|
||||
}
|
||||
}
|
||||
|
||||
private static int GetExpBottleRewardItemId(ExpBottleKind kind)
|
||||
{
|
||||
switch (kind)
|
||||
|
||||
Reference in New Issue
Block a user