加入很多新内容,这波一块交了

This commit is contained in:
FloatGaming
2026-04-08 20:53:41 +08:00
parent d9376833b6
commit 85dfff28dd
128 changed files with 14546 additions and 474 deletions
+133 -4
View File
@@ -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)