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

feat(角色系统): 重构角色生成和升级系统

- 在EntityBase.gd中修改角色生成逻辑,使用FeedCardBase初始化角色属性
- 调整OutGameStorage.gd中的升级字段初始值和成本配置
- 在ComponentManager.gd中添加抽象组件管理功能
- 更新Rooster.tscn的默认武器为ChainGun
- 在Starter.gd中优化升级界面刷新逻辑,提取rebuildInfo方法
- 在MakeFeed.gd中添加feed卡片重建功能
This commit is contained in:
2026-05-04 10:30:54 +08:00
parent 5e82841d58
commit 6b31030887
6 changed files with 32 additions and 17 deletions
+3
View File
@@ -36,6 +36,9 @@ func _ready():
updateValue()
if selectedCount >= UIState.player.fields[FieldStore.Entity.FEED_COUNT_CAN_MADE]:
finish()
for feedCard in feedCards.get_children():
if feedCard is Feed:
feed.rebuildInfo()
)
avaliableFeeds.add_child(feed)
+7 -10
View File
@@ -164,15 +164,19 @@ func beforeOpen(_args: Array = []):
diffEdit.max_value = GameRule.difficultyRange.y
diffEdit.value = GameRule.difficulty
setState(MultiplayerState.ConnectionState.DISCONNECTED)
rebuildInfo()
startSingleplayerBtn.disabled = false
Wave.current = 0
func rebuildInfo():
crystalShow.count = OutGameStorage.inventory[ItemStore.ItemType.CRYSTAL]
diamondShow.count = OutGameStorage.inventory[ItemStore.ItemType.DIAMOND]
for child in upgradeFieldsBox.get_children():
upgradeFieldsBox.remove_child(child)
for field in OutGameStorage.upgradableFieldsAdvance:
var fieldShow = ComponentManager.getUIComponent("FieldShow").instantiate() as FieldShow
fieldShow.cost(ItemStore.ItemType.CRYSTAL, 50 * OutGameStorage.upgradableFieldsLevel[fieldShow.field])
fieldShow.cost(ItemStore.ItemType.DIAMOND, OutGameStorage.upgradableFieldsLevel[fieldShow.field] - 1)
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])
fieldShow.upgradable = true
fieldShow.upgradeValue = OutGameStorage.upgradableFieldsAdvance[field]
fieldShow.field = field
@@ -182,13 +186,6 @@ func beforeOpen(_args: Array = []):
func(newValue: float):
OutGameStorage.upgradableFieldsValue[fieldShow.field] = newValue
OutGameStorage.upgradableFieldsLevel[fieldShow.field] += 1
for index in len(fieldShow.costCounts):
if fieldShow.costCounts[index] == 0:
fieldShow.costCounts[index] += 1
else:
fieldShow.costCounts[index] *= (OutGameStorage.upgradableFieldsLevel[fieldShow.field] + 1) / OutGameStorage.upgradableFieldsLevel[fieldShow.field]
rebuildInfo()
)
upgradeFieldsBox.add_child(fieldShow)
startSingleplayerBtn.disabled = false
Wave.current = 0
+5 -1
View File
@@ -560,8 +560,12 @@ static func generatePlayer(playerName: String) -> EntityBase:
var player = generate(ComponentManager.getCharacter("Rooster"), Vector2.ZERO, false)
player.displayName = playerName
player.name = "Player_%s" % playerName
var feed = ComponentManager.getAbstract("FeedCardBase").instantiate() as Feed
for field in OutGameStorage.upgradableFieldsValue:
player.fields[field] += OutGameStorage.upgradableFieldsValue[field]
feed.fields.append(field)
feed.fieldValues.append(OutGameStorage.upgradableFieldsValue[field])
feed.freeToBuy = true
feed.apply(player)
return player
static func generate(
entity: PackedScene,
@@ -2,6 +2,7 @@
extends Node
class_name ComponentManager
static var abstracts = {}
static var bullets = {}
static var characters = {}
static var weapons = {}
@@ -16,6 +17,8 @@ static var fieldTextures = {}
static var itemTextures = {}
static func init():
for i in DirTool.listdir("res://components/Abstracts"):
abstracts[DirTool.getBasenameWithoutExtension(i)] = load(i)
for i in DirTool.listdir("res://components/Bullets"):
bullets[DirTool.getBasenameWithoutExtension(i)] = load(i)
for i in DirTool.listdir("res://components/Characters"):
@@ -40,6 +43,9 @@ static func init():
fieldTextures[DirTool.getBasenameWithoutExtension(i)] = load(i)
for i in DirTool.listdir("res://resources/items"):
itemTextures[DirTool.getBasenameWithoutExtension(i)] = load(i)
static func getAbstract(t: String) -> PackedScene:
return MathTool.priority(abstracts.get(t, false), load("res://components/Abstracts/%s.tscn" % t))
static func getBullet(t: String) -> PackedScene:
return MathTool.priority(bullets.get(t, false), load("res://components/Bullets/%s.tscn" % t))
static func getCharacter(t: String) -> PackedScene:
+8 -4
View File
@@ -7,6 +7,10 @@ static var inventory = {
ItemStore.ItemType.DIAMOND: 0
}
static var upgradableFieldsCost = {
ItemStore.ItemType.CRYSTAL: 50,
ItemStore.ItemType.DIAMOND: 1,
}
static var upgradableFieldsAdvance = {
FieldStore.Entity.MAX_HEALTH: 10,
FieldStore.Entity.DAMAGE_MULTIPILER: 0.1,
@@ -20,8 +24,8 @@ static var upgradableFieldsValue = {
FieldStore.Entity.PRICE_REDUCTION: 0,
}
static var upgradableFieldsLevel = {
FieldStore.Entity.MAX_HEALTH: 1,
FieldStore.Entity.DAMAGE_MULTIPILER: 1,
FieldStore.Entity.ATTACK_SPEED: 1,
FieldStore.Entity.PRICE_REDUCTION: 1,
FieldStore.Entity.MAX_HEALTH: 0,
FieldStore.Entity.DAMAGE_MULTIPILER: 0,
FieldStore.Entity.ATTACK_SPEED: 0,
FieldStore.Entity.PRICE_REDUCTION: 0,
}