78 lines
2.6 KiB
C#
78 lines
2.6 KiB
C#
using UnityEngine;
|
|
|
|
namespace GeometryTD.UI
|
|
{
|
|
public partial class CombatSelectFormController
|
|
{
|
|
private static CombatSelectFormContext BuildContext(CombatSelectFormRawData rawData)
|
|
{
|
|
if (rawData == null)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
return new CombatSelectFormContext
|
|
{
|
|
IsVisible = rawData.IsVisible,
|
|
ScreenPosition = rawData.ScreenPosition,
|
|
ShowBuildArea = rawData.IsVisible && rawData.DisplayMode == CombatSelectDisplayMode.Build,
|
|
ShowFuncArea = rawData.IsVisible && rawData.DisplayMode == CombatSelectDisplayMode.Func,
|
|
BuildItems = BuildItemContexts(rawData.BuildItems),
|
|
UpgradeItem = BuildItemContext(rawData.UpgradeItem),
|
|
DestroyItem = BuildItemContext(rawData.DestroyItem)
|
|
};
|
|
}
|
|
|
|
private static TowerSelectItemContext[] BuildItemContexts(TowerSelectItemRawData[] itemRawData)
|
|
{
|
|
if (itemRawData == null || itemRawData.Length <= 0)
|
|
{
|
|
return System.Array.Empty<TowerSelectItemContext>();
|
|
}
|
|
|
|
TowerSelectItemContext[] contexts = new TowerSelectItemContext[itemRawData.Length];
|
|
for (int i = 0; i < itemRawData.Length; i++)
|
|
{
|
|
contexts[i] = BuildItemContext(itemRawData[i]);
|
|
}
|
|
|
|
return contexts;
|
|
}
|
|
|
|
private static TowerSelectItemContext BuildItemContext(TowerSelectItemRawData rawData)
|
|
{
|
|
if (rawData == null)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
return new TowerSelectItemContext
|
|
{
|
|
Icon = rawData.Icon,
|
|
PriceText = BuildPriceText(rawData.Price, rawData.IsGain),
|
|
IsVisible = rawData.IsVisible,
|
|
IsInteractable = rawData.IsInteractable,
|
|
ActionType = rawData.ActionType,
|
|
ActionIndex = rawData.ActionIndex,
|
|
TowerIconAreaContext = new TowerIconAreaContext
|
|
{
|
|
BaseColor = rawData.BaseColor,
|
|
BearingColor = rawData.BearingColor,
|
|
MuzzleColor = rawData.MuzzleColor
|
|
}
|
|
};
|
|
}
|
|
|
|
private static string BuildPriceText(int price, bool isGain)
|
|
{
|
|
int positivePrice = Mathf.Max(0, price);
|
|
if (isGain)
|
|
{
|
|
return $"+{positivePrice}";
|
|
}
|
|
|
|
return positivePrice.ToString();
|
|
}
|
|
}
|
|
}
|