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[] 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(); } } }