mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-27 22:41:56 +08:00
feat: 添加水晶和钻石物品系统
- 在EntityBase中新增水晶和钻石物品类型 - 敌人在死亡时概率掉落水晶,BOSS额外掉落钻石 - 游戏结束时将水晶和钻石存入OutGameStorage - 调整Starter面板中钻石升级成本为0 - 在UI场景中添加水晶和钻石显示节点
This commit is contained in:
@@ -180,6 +180,16 @@ unique_name_in_owner = true
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
type = 4
|
type = 4
|
||||||
|
|
||||||
|
[node name="crystal" parent="root/itemsContainer/items" unique_id=707392257 instance=ExtResource("3_o2oi4")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
type = 5
|
||||||
|
|
||||||
|
[node name="diamond" parent="root/itemsContainer/items" unique_id=1684500885 instance=ExtResource("3_o2oi4")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
type = 6
|
||||||
|
|
||||||
[node name="energyContainer" type="PanelContainer" parent="root" unique_id=1886165069]
|
[node name="energyContainer" type="PanelContainer" parent="root" unique_id=1886165069]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
z_index = 1
|
z_index = 1
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ func beforeOpen(args: Array = []):
|
|||||||
audio.play()
|
audio.play()
|
||||||
var reasonTemplate = MathTool.randomChoiceFrom(GameRule.deadReasons)
|
var reasonTemplate = MathTool.randomChoiceFrom(GameRule.deadReasons)
|
||||||
deadreason.text = ("[color=gray]" + reasonTemplate + "凶手是[b]%s[/b]的[b]%s[/b]。[/color]") % args
|
deadreason.text = ("[color=gray]" + reasonTemplate + "凶手是[b]%s[/b]的[b]%s[/b]。[/color]") % args
|
||||||
|
OutGameStorage.inventory[ItemStore.ItemType.CRYSTAL] += UIState.player.inventory[ItemStore.ItemType.CRYSTAL]
|
||||||
|
OutGameStorage.inventory[ItemStore.ItemType.DIAMOND] += UIState.player.inventory[ItemStore.ItemType.DIAMOND]
|
||||||
func afterOpen(_args: Array = []):
|
func afterOpen(_args: Array = []):
|
||||||
returnBtn.disabled = false
|
returnBtn.disabled = false
|
||||||
exitBtn.disabled = false
|
exitBtn.disabled = false
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ func beforeOpen(_args: Array = []):
|
|||||||
startBtn.pressed.emit()
|
startBtn.pressed.emit()
|
||||||
)
|
)
|
||||||
feedCounted += 1
|
feedCounted += 1
|
||||||
|
func afterOpen(_args: Array = []):
|
||||||
|
startBtn.disabled = false
|
||||||
|
|
||||||
func clearFeeds():
|
func clearFeeds():
|
||||||
for feed in initialFeedSelection.get_children():
|
for feed in initialFeedSelection.get_children():
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ func beforeOpen(_args: Array = []):
|
|||||||
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, 50)
|
fieldShow.cost(ItemStore.ItemType.CRYSTAL, 50)
|
||||||
fieldShow.cost(ItemStore.ItemType.DIAMOND, 1)
|
fieldShow.cost(ItemStore.ItemType.DIAMOND, 0)
|
||||||
fieldShow.upgradable = true
|
fieldShow.upgradable = true
|
||||||
fieldShow.upgradeValue = OutGameStorage.upgradableFieldsAdvance[field]
|
fieldShow.upgradeValue = OutGameStorage.upgradableFieldsAdvance[field]
|
||||||
fieldShow.field = field
|
fieldShow.field = field
|
||||||
@@ -182,8 +182,12 @@ func beforeOpen(_args: Array = []):
|
|||||||
func(newValue: float):
|
func(newValue: float):
|
||||||
OutGameStorage.upgradableFieldsValue[fieldShow.field] = newValue
|
OutGameStorage.upgradableFieldsValue[fieldShow.field] = newValue
|
||||||
for index in len(fieldShow.costCounts):
|
for index in len(fieldShow.costCounts):
|
||||||
fieldShow.costCounts[index] *= GameRule.outGameUpgradeMultipiler
|
if fieldShow.costCounts[index] == 0:
|
||||||
|
fieldShow.costCounts[index] += 1
|
||||||
|
else:
|
||||||
|
fieldShow.costCounts[index] *= GameRule.outGameUpgradeMultipiler
|
||||||
)
|
)
|
||||||
upgradeFieldsBox.add_child(fieldShow)
|
upgradeFieldsBox.add_child(fieldShow)
|
||||||
|
|
||||||
startSingleplayerBtn.disabled = false
|
startSingleplayerBtn.disabled = false
|
||||||
|
Wave.current = 0
|
||||||
|
|||||||
@@ -67,6 +67,8 @@ var inventory = {
|
|||||||
ItemStore.ItemType.APPLE: 5,
|
ItemStore.ItemType.APPLE: 5,
|
||||||
ItemStore.ItemType.BEACHBALL: 0,
|
ItemStore.ItemType.BEACHBALL: 0,
|
||||||
ItemStore.ItemType.SOUL: 0,
|
ItemStore.ItemType.SOUL: 0,
|
||||||
|
ItemStore.ItemType.CRYSTAL: 0,
|
||||||
|
ItemStore.ItemType.DIAMOND: 0
|
||||||
}
|
}
|
||||||
var inventoryMax = {
|
var inventoryMax = {
|
||||||
ItemStore.ItemType.BASEBALL: INF, # 无限
|
ItemStore.ItemType.BASEBALL: INF, # 无限
|
||||||
@@ -74,6 +76,8 @@ var inventoryMax = {
|
|||||||
ItemStore.ItemType.APPLE: 5,
|
ItemStore.ItemType.APPLE: 5,
|
||||||
ItemStore.ItemType.BEACHBALL: INF,
|
ItemStore.ItemType.BEACHBALL: INF,
|
||||||
ItemStore.ItemType.SOUL: INF,
|
ItemStore.ItemType.SOUL: INF,
|
||||||
|
ItemStore.ItemType.CRYSTAL: INF,
|
||||||
|
ItemStore.ItemType.DIAMOND: INF,
|
||||||
}
|
}
|
||||||
|
|
||||||
@export var defaultCooldownUnit: float = 100
|
@export var defaultCooldownUnit: float = 100
|
||||||
@@ -415,6 +419,18 @@ 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):
|
||||||
|
ItemDropped.generate(
|
||||||
|
ItemStore.ItemType.CRYSTAL,
|
||||||
|
5 if isBoss else 1,
|
||||||
|
position + MathTool.sampleInCircle(GameRule.itemDroppedSpawnOffset)
|
||||||
|
)
|
||||||
|
if isBoss:
|
||||||
|
ItemDropped.generate(
|
||||||
|
ItemStore.ItemType.DIAMOND,
|
||||||
|
1,
|
||||||
|
position + MathTool.sampleInCircle(GameRule.itemDroppedSpawnOffset)
|
||||||
|
)
|
||||||
if isBoss:
|
if isBoss:
|
||||||
ItemDropped.generate(
|
ItemDropped.generate(
|
||||||
ItemStore.ItemType.SOUL,
|
ItemStore.ItemType.SOUL,
|
||||||
@@ -544,6 +560,8 @@ static func generatePlayer(playerName: String) -> EntityBase:
|
|||||||
var player = generate(ComponentManager.getCharacter("Rooster"), Vector2.ZERO, false)
|
var player = generate(ComponentManager.getCharacter("Rooster"), Vector2.ZERO, false)
|
||||||
player.displayName = playerName
|
player.displayName = playerName
|
||||||
player.name = "Player_%s" % playerName
|
player.name = "Player_%s" % playerName
|
||||||
|
for field in OutGameStorage.upgradableFieldsValue:
|
||||||
|
player.fields[field] += OutGameStorage.upgradableFieldsValue[field]
|
||||||
return player
|
return player
|
||||||
static func generate(
|
static func generate(
|
||||||
entity: PackedScene,
|
entity: PackedScene,
|
||||||
|
|||||||
@@ -118,7 +118,6 @@ func _ready():
|
|||||||
)
|
)
|
||||||
for i in sounds.get_children():
|
for i in sounds.get_children():
|
||||||
i.process_mode = ProcessMode.PROCESS_MODE_ALWAYS
|
i.process_mode = ProcessMode.PROCESS_MODE_ALWAYS
|
||||||
rebuildInfo()
|
|
||||||
debugRebuild = false # 只能在编辑器里打开
|
debugRebuild = false # 只能在编辑器里打开
|
||||||
func _physics_process(_delta):
|
func _physics_process(_delta):
|
||||||
if debugRebuild:
|
if debugRebuild:
|
||||||
|
|||||||
Reference in New Issue
Block a user