1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 06:51:54 +08:00

feat(ArrayTool): 添加字典填充工具方法

refactor(OutGameStorage): 重构升级字段初始化逻辑
使用新的ArrayTool.fill方法简化字典初始化,提高代码可读性

fix(EntityBase): 调整boss死亡掉落物品数量
将boss掉落水晶数量上限从20降低到10,钻石掉落数量改为1-3随机

fix(Starter): 修复升级成本计算逻辑
根据新的升级成本数据结构调整升级显示计算方式
This commit is contained in:
2026-05-04 10:52:17 +08:00
parent 6b31030887
commit f9e512a5e6
4 changed files with 21 additions and 25 deletions
+4 -2
View File
@@ -175,8 +175,10 @@ func rebuildInfo():
upgradeFieldsBox.remove_child(child) upgradeFieldsBox.remove_child(child)
for field in OutGameStorage.upgradableFieldsAdvance: for field in OutGameStorage.upgradableFieldsAdvance:
var fieldShow = ComponentManager.getUIComponent("FieldShow").instantiate() as FieldShow var fieldShow = ComponentManager.getUIComponent("FieldShow").instantiate() as FieldShow
fieldShow.cost(ItemStore.ItemType.CRYSTAL, OutGameStorage.upgradableFieldsCost[ItemStore.ItemType.CRYSTAL] * (OutGameStorage.upgradableFieldsLevel[field] + 1)) var level = OutGameStorage.upgradableFieldsLevel[field]
fieldShow.cost(ItemStore.ItemType.DIAMOND, OutGameStorage.upgradableFieldsCost[ItemStore.ItemType.DIAMOND] * OutGameStorage.upgradableFieldsLevel[field]) for item in OutGameStorage.upgradableFieldsCost:
var count = OutGameStorage.upgradableFieldsCost[item]
fieldShow.cost(item, count[0] * (level + count[1]))
fieldShow.upgradable = true fieldShow.upgradable = true
fieldShow.upgradeValue = OutGameStorage.upgradableFieldsAdvance[field] fieldShow.upgradeValue = OutGameStorage.upgradableFieldsAdvance[field]
fieldShow.field = field fieldShow.field = field
+2 -2
View File
@@ -419,7 +419,7 @@ func tryDie(by: BulletBase = null):
fields[FieldStore.Entity.MAX_HEALTH] * randf_range(1 - GameRule.beachballOffset, 1 + GameRule.beachballOffset), fields[FieldStore.Entity.MAX_HEALTH] * randf_range(1 - GameRule.beachballOffset, 1 + GameRule.beachballOffset),
position + MathTool.sampleInCircle(GameRule.itemDroppedSpawnOffset) position + MathTool.sampleInCircle(GameRule.itemDroppedSpawnOffset)
) )
for i in randi_range(0, 20 if isBoss else 3): for i in randi_range(0, 10 if isBoss else 3):
ItemDropped.generate( ItemDropped.generate(
ItemStore.ItemType.CRYSTAL, ItemStore.ItemType.CRYSTAL,
5 if isBoss else 1, 5 if isBoss else 1,
@@ -428,7 +428,7 @@ func tryDie(by: BulletBase = null):
if isBoss: if isBoss:
ItemDropped.generate( ItemDropped.generate(
ItemStore.ItemType.DIAMOND, ItemStore.ItemType.DIAMOND,
1, randi_range(1, 3),
position + MathTool.sampleInCircle(GameRule.itemDroppedSpawnOffset) position + MathTool.sampleInCircle(GameRule.itemDroppedSpawnOffset)
) )
if isBoss: if isBoss:
+7
View File
@@ -24,3 +24,10 @@ static func betterMap(arr: Array, executor: Callable) -> Array:
for index in len(arr): for index in len(arr):
result.append(executor.call(arr[index], index, arr)) result.append(executor.call(arr[index], index, arr))
return result return result
static func fill(origin: Dictionary, filler: Callable) -> Dictionary:
return origin.keys().reduce(
func(accum, key):
accum[key] = filler.call(key)
return accum,
{}
)
+8 -21
View File
@@ -1,15 +1,8 @@
class_name OutGameStorage class_name OutGameStorage
static var maxInitialFeedCount: int = 3
static var maxInitialWeaponCount: int = 3
static var inventory = {
ItemStore.ItemType.CRYSTAL: 0,
ItemStore.ItemType.DIAMOND: 0
}
static var upgradableFieldsCost = { static var upgradableFieldsCost = {
ItemStore.ItemType.CRYSTAL: 50, ItemStore.ItemType.CRYSTAL: [50, 1], # [每级所需,初始等级]
ItemStore.ItemType.DIAMOND: 1, ItemStore.ItemType.DIAMOND: [1, 0],
} }
static var upgradableFieldsAdvance = { static var upgradableFieldsAdvance = {
FieldStore.Entity.MAX_HEALTH: 10, FieldStore.Entity.MAX_HEALTH: 10,
@@ -17,15 +10,9 @@ static var upgradableFieldsAdvance = {
FieldStore.Entity.ATTACK_SPEED: 0.05, FieldStore.Entity.ATTACK_SPEED: 0.05,
FieldStore.Entity.PRICE_REDUCTION: 0.02, FieldStore.Entity.PRICE_REDUCTION: 0.02,
} }
static var upgradableFieldsValue = { static var upgradableFieldsValue = ArrayTool.fill(upgradableFieldsAdvance, func(_k): return 0)
FieldStore.Entity.MAX_HEALTH: 0, static var upgradableFieldsLevel = ArrayTool.fill(upgradableFieldsAdvance, func(_k): return 0)
FieldStore.Entity.DAMAGE_MULTIPILER: 0,
FieldStore.Entity.ATTACK_SPEED: 0, static var maxInitialFeedCount: int = 3
FieldStore.Entity.PRICE_REDUCTION: 0, static var maxInitialWeaponCount: int = 3
} static var inventory = ArrayTool.fill(upgradableFieldsCost, func(_k): return 0)
static var upgradableFieldsLevel = {
FieldStore.Entity.MAX_HEALTH: 0,
FieldStore.Entity.DAMAGE_MULTIPILER: 0,
FieldStore.Entity.ATTACK_SPEED: 0,
FieldStore.Entity.PRICE_REDUCTION: 0,
}