文件迁移

This commit is contained in:
2026-03-07 18:26:28 +08:00
parent ab7c7172b8
commit 3badbe9212
31 changed files with 54 additions and 29 deletions
@@ -0,0 +1,21 @@
using GeometryTD.DataTable;
using GeometryTD.Definition;
namespace GeometryTD.CustomComponent
{
internal readonly struct EnemyDropResolveContext
{
public EnemyDropResolveContext(DREnemy enemy, int displayPhaseIndex, LevelThemeType themeType)
{
Enemy = enemy;
DisplayPhaseIndex = displayPhaseIndex;
ThemeType = themeType;
}
public DREnemy Enemy { get; }
public int DisplayPhaseIndex { get; }
public LevelThemeType ThemeType { get; }
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: cc1fe871193e2594189cac3af541f354
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,20 @@
namespace GeometryTD.CustomComponent
{
internal readonly struct EnemyDropResolveResult
{
public static EnemyDropResolveResult Empty => new(0, 0, false);
public EnemyDropResolveResult(int coin, int gold, bool shouldRollOutGameItem)
{
Coin = coin;
Gold = gold;
ShouldRollOutGameItem = shouldRollOutGameItem;
}
public int Coin { get; }
public int Gold { get; }
public bool ShouldRollOutGameItem { get; }
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 754c09edf691f354aa918c4a730a9cc5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,32 @@
using GeometryTD.DataTable;
using UnityEngine;
using Random = UnityEngine.Random;
namespace GeometryTD.CustomComponent
{
internal sealed class EnemyDropResolver
{
public EnemyDropResolveResult Resolve(in EnemyDropResolveContext context)
{
DREnemy enemy = context.Enemy;
if (enemy == null)
{
return EnemyDropResolveResult.Empty;
}
int coin = Mathf.Max(0, enemy.DropCoin);
int gold = 0;
float dropRate = enemy.DropPercent > 1f
? Mathf.Clamp01(enemy.DropPercent * 0.01f)
: Mathf.Clamp01(enemy.DropPercent);
if (enemy.DropGold > 0 && dropRate > 0f && Random.value <= dropRate)
{
gold = Mathf.Max(0, enemy.DropGold);
}
return new EnemyDropResolveResult(coin, gold, shouldRollOutGameItem: true);
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b7dc48b97505d0242bf5846ba835f3b3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: