diff --git a/scripts/Contents/Panels/Starter.gd b/scripts/Contents/Panels/Starter.gd index 1c59ba5..438b9fb 100644 --- a/scripts/Contents/Panels/Starter.gd +++ b/scripts/Contents/Panels/Starter.gd @@ -175,8 +175,10 @@ func rebuildInfo(): upgradeFieldsBox.remove_child(child) for field in OutGameStorage.upgradableFieldsAdvance: var fieldShow = ComponentManager.getUIComponent("FieldShow").instantiate() as FieldShow - fieldShow.cost(ItemStore.ItemType.CRYSTAL, OutGameStorage.upgradableFieldsCost[ItemStore.ItemType.CRYSTAL] * (OutGameStorage.upgradableFieldsLevel[field] + 1)) - fieldShow.cost(ItemStore.ItemType.DIAMOND, OutGameStorage.upgradableFieldsCost[ItemStore.ItemType.DIAMOND] * OutGameStorage.upgradableFieldsLevel[field]) + var level = 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.upgradeValue = OutGameStorage.upgradableFieldsAdvance[field] fieldShow.field = field diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index d5d14ae..d492991 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -419,7 +419,7 @@ func tryDie(by: BulletBase = null): fields[FieldStore.Entity.MAX_HEALTH] * randf_range(1 - GameRule.beachballOffset, 1 + GameRule.beachballOffset), 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( ItemStore.ItemType.CRYSTAL, 5 if isBoss else 1, @@ -428,7 +428,7 @@ func tryDie(by: BulletBase = null): if isBoss: ItemDropped.generate( ItemStore.ItemType.DIAMOND, - 1, + randi_range(1, 3), position + MathTool.sampleInCircle(GameRule.itemDroppedSpawnOffset) ) if isBoss: diff --git a/scripts/Tools/ArrayTool.gd b/scripts/Tools/ArrayTool.gd index bd3c22f..b43225d 100644 --- a/scripts/Tools/ArrayTool.gd +++ b/scripts/Tools/ArrayTool.gd @@ -24,3 +24,10 @@ static func betterMap(arr: Array, executor: Callable) -> Array: for index in len(arr): result.append(executor.call(arr[index], index, arr)) return result +static func fill(origin: Dictionary, filler: Callable) -> Dictionary: + return origin.keys().reduce( + func(accum, key): + accum[key] = filler.call(key) + return accum, + {} + ) diff --git a/scripts/Tools/OutGameStorage.gd b/scripts/Tools/OutGameStorage.gd index 094525f..4202d67 100644 --- a/scripts/Tools/OutGameStorage.gd +++ b/scripts/Tools/OutGameStorage.gd @@ -1,15 +1,8 @@ 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 = { - ItemStore.ItemType.CRYSTAL: 50, - ItemStore.ItemType.DIAMOND: 1, + ItemStore.ItemType.CRYSTAL: [50, 1], # [每级所需,初始等级] + ItemStore.ItemType.DIAMOND: [1, 0], } static var upgradableFieldsAdvance = { FieldStore.Entity.MAX_HEALTH: 10, @@ -17,15 +10,9 @@ static var upgradableFieldsAdvance = { FieldStore.Entity.ATTACK_SPEED: 0.05, FieldStore.Entity.PRICE_REDUCTION: 0.02, } -static var upgradableFieldsValue = { - FieldStore.Entity.MAX_HEALTH: 0, - FieldStore.Entity.DAMAGE_MULTIPILER: 0, - FieldStore.Entity.ATTACK_SPEED: 0, - FieldStore.Entity.PRICE_REDUCTION: 0, -} -static var upgradableFieldsLevel = { - FieldStore.Entity.MAX_HEALTH: 0, - FieldStore.Entity.DAMAGE_MULTIPILER: 0, - FieldStore.Entity.ATTACK_SPEED: 0, - FieldStore.Entity.PRICE_REDUCTION: 0, -} \ No newline at end of file +static var upgradableFieldsValue = ArrayTool.fill(upgradableFieldsAdvance, func(_k): return 0) +static var upgradableFieldsLevel = ArrayTool.fill(upgradableFieldsAdvance, func(_k): return 0) + +static var maxInitialFeedCount: int = 3 +static var maxInitialWeaponCount: int = 3 +static var inventory = ArrayTool.fill(upgradableFieldsCost, func(_k): return 0)