Implement many UX improvements, packages and their assets and a UI overhaul in collection
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace KernelPanic.Meta
|
||||
{
|
||||
public static class PackageTuning
|
||||
{
|
||||
public const int MaxPackageLevel = 5;
|
||||
public const float RefundFraction = 1f;
|
||||
public const float RarityCostMultiplier = 1f;
|
||||
|
||||
private static readonly int[] CachePerRarityValues = { 5, 12, 30, 80, 200 };
|
||||
private static readonly int[] UpgradeCacheCostValues = { 10, 25, 50, 90, 150 };
|
||||
private static readonly int[] UpgradeBandwidthCostValues = { 20, 50, 100, 180, 300 };
|
||||
|
||||
public static int GetCacheForRarity(int rarity)
|
||||
{
|
||||
return CachePerRarityValues[Mathf.Clamp(rarity, 1, CachePerRarityValues.Length) - 1];
|
||||
}
|
||||
|
||||
public static int GetUpgradeCacheCost(int nextLevel, int rarity)
|
||||
{
|
||||
return ApplyRarityMultiplier(UpgradeCacheCostValues[Mathf.Clamp(nextLevel, 1, UpgradeCacheCostValues.Length) - 1], rarity);
|
||||
}
|
||||
|
||||
public static int GetUpgradeBandwidthCost(int nextLevel, int rarity)
|
||||
{
|
||||
return ApplyRarityMultiplier(UpgradeBandwidthCostValues[Mathf.Clamp(nextLevel, 1, UpgradeBandwidthCostValues.Length) - 1], rarity);
|
||||
}
|
||||
|
||||
public static int GetInvestedCache(int level, int rarity)
|
||||
{
|
||||
int total = 0;
|
||||
for (int nextLevel = 1; nextLevel <= Mathf.Clamp(level, 0, MaxPackageLevel); nextLevel++)
|
||||
{
|
||||
total += GetUpgradeCacheCost(nextLevel, rarity);
|
||||
}
|
||||
|
||||
return total;
|
||||
}
|
||||
|
||||
public static int GetInvestedBandwidth(int level, int rarity)
|
||||
{
|
||||
int total = 0;
|
||||
for (int nextLevel = 1; nextLevel <= Mathf.Clamp(level, 0, MaxPackageLevel); nextLevel++)
|
||||
{
|
||||
total += GetUpgradeBandwidthCost(nextLevel, rarity);
|
||||
}
|
||||
|
||||
return total;
|
||||
}
|
||||
|
||||
public static int GetRefundedInvestedCache(int level, int rarity)
|
||||
{
|
||||
return Mathf.RoundToInt(GetInvestedCache(level, rarity) * RefundFraction);
|
||||
}
|
||||
|
||||
public static int GetRefundedInvestedBandwidth(int level, int rarity)
|
||||
{
|
||||
return Mathf.RoundToInt(GetInvestedBandwidth(level, rarity) * RefundFraction);
|
||||
}
|
||||
|
||||
private static int ApplyRarityMultiplier(int baseCost, int rarity)
|
||||
{
|
||||
float multiplier = RarityCostMultiplier <= 0f ? 1f : RarityCostMultiplier;
|
||||
return Math.Max(0, Mathf.RoundToInt(baseCost * multiplier));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user