update design

This commit is contained in:
2026-04-30 10:36:25 +08:00
parent 55506eff9a
commit a38a8d4b39
25 changed files with 999 additions and 113 deletions
@@ -145,6 +145,12 @@ namespace GeometryTD.CustomComponent
return _towerRosterService.ReduceTowerEndurance(towerInstanceIds, enduranceLoss);
}
public bool TryDisassembleTower(long towerInstanceId)
{
EnsureInitialized();
return _towerAssemblyService.TryDisassembleTower(towerInstanceId);
}
public bool TryGetSaleCandidate(long itemId, out PlayerInventorySaleCandidate candidate)
{
EnsureInitialized();
@@ -123,7 +123,7 @@ namespace GeometryTD.CustomComponent
int[] values = new int[TowerLevelCount];
for (int i = 0; i < values.Length; i++)
{
values[i] = baseValue + perLevel * i;
values[i] = Mathf.Max(0, baseValue + perLevel * i);
}
return values;
@@ -135,7 +135,7 @@ namespace GeometryTD.CustomComponent
float[] values = new float[TowerLevelCount];
for (int i = 0; i < values.Length; i++)
{
values[i] = baseValue + perLevel * i;
values[i] = Mathf.Max(0f, baseValue + perLevel * i);
}
return values;
@@ -180,5 +180,37 @@ namespace GeometryTD.CustomComponent
_drBaseComp ??= GameEntry.DataTable.GetDataTable<DRBaseComp>();
return _drBaseComp;
}
public bool TryDisassembleTower(long towerInstanceId)
{
BackpackInventoryData inventory = _queryModel.Inventory;
if (towerInstanceId <= 0)
{
return false;
}
if (!_queryModel.TryGetTowerById(towerInstanceId, out TowerItemData tower) || tower == null)
{
return false;
}
if (!_queryModel.TryGetComponentById(inventory.MuzzleComponents, tower.MuzzleComponentInstanceId, out MuzzleCompItemData muzzleComp) ||
!_queryModel.TryGetComponentById(inventory.BearingComponents, tower.BearingComponentInstanceId, out BearingCompItemData bearingComp) ||
!_queryModel.TryGetComponentById(inventory.BaseComponents, tower.BaseComponentInstanceId, out BaseCompItemData baseComp))
{
return false;
}
InventoryParticipantUtility.TryRemoveParticipantTower(inventory, towerInstanceId, MaxParticipantTowerCount);
muzzleComp.IsAssembledIntoTower = false;
bearingComp.IsAssembledIntoTower = false;
baseComp.IsAssembledIntoTower = false;
inventory.Towers.Remove(tower);
return true;
}
private const int MaxParticipantTowerCount = 4;
}
}
@@ -24,8 +24,8 @@ namespace GeometryTD.Definition
int normalizedBase = (int)NormalizeComponentRarity(baseRarity);
float average = (normalizedMuzzle + normalizedBearing + normalizedBase) / 3f;
int rounded = Mathf.RoundToInt(average);
int clamped = Mathf.Clamp(rounded, (int)RarityType.White, (int)RarityType.Red);
int floored = Mathf.FloorToInt(average);
int clamped = Mathf.Clamp(floored, (int)RarityType.White, (int)RarityType.Red);
return (RarityType)clamped;
}
}