mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-28 06:51:54 +08:00
feat: 新增角色系统及基础功能实现
新增HCN、Lynx和MuyangDog三个可玩角色及其相关资源 实现角色选择界面和角色属性系统 重构玩家生成逻辑以支持角色选择 优化角色卡片UI显示效果
This commit is contained in:
@@ -7,16 +7,16 @@ var speedScale: float = 1
|
||||
func _init(cd: float = 100):
|
||||
cooldown = cd
|
||||
|
||||
func centralTime():
|
||||
func centralTime() -> float:
|
||||
return cooldown / speedScale
|
||||
func isCooldowned():
|
||||
func isCooldowned() -> bool:
|
||||
return timeSinceLastStart() >= centralTime()
|
||||
func start():
|
||||
func start() -> bool:
|
||||
var state = isCooldowned()
|
||||
if state:
|
||||
lastStart = WorldManager.getTime()
|
||||
return state
|
||||
func timeSinceLastStart():
|
||||
func timeSinceLastStart() -> float:
|
||||
return WorldManager.getTime() - lastStart
|
||||
func percent():
|
||||
func percent() -> float:
|
||||
return timeSinceLastStart() / centralTime()
|
||||
|
||||
@@ -138,7 +138,7 @@ func _ready():
|
||||
UIState.player = self
|
||||
if WorldManager.isRelease():
|
||||
for i in weaponStore.get_children():
|
||||
i.free()
|
||||
i.queue_free()
|
||||
weaponStore.add_child(ComponentManager.getWeapon("PurpleCrystal").instantiate())
|
||||
for i in weaponStore.get_children():
|
||||
i.hide()
|
||||
@@ -505,6 +505,7 @@ func summon(who: PackedScene, syncFields: bool = true, lockValue: bool = true) -
|
||||
var instance: SummonBase = who.instantiate()
|
||||
instance.position = get_global_mouse_position()
|
||||
instance.myMaster = self
|
||||
summoned(instance)
|
||||
if isPlayer(): instance.add_to_group("players")
|
||||
if syncFields:
|
||||
if lockValue:
|
||||
@@ -550,20 +551,22 @@ func enterStage(_stage: int):
|
||||
pass
|
||||
func kill():
|
||||
pass
|
||||
func summoned(_entity: SummonBase):
|
||||
pass
|
||||
|
||||
static func findPlayer(playerName: String) -> EntityBase:
|
||||
for i in getPlayers():
|
||||
if i.displayName == playerName:
|
||||
return i
|
||||
return null
|
||||
static func generatePlayer(playerName: String) -> EntityBase:
|
||||
var player = generate(ComponentManager.getCharacter("Rooster"), Vector2.ZERO, false)
|
||||
player.displayName = playerName
|
||||
static func generatePlayer(playerName: String, character: String, extraFields: Dictionary = {}) -> EntityBase:
|
||||
var player = generate(ComponentManager.getCharacter(character), Vector2.ZERO, false, false, true, playerName)
|
||||
player.name = "Player_%s" % playerName
|
||||
print(extraFields)
|
||||
var feed = ComponentManager.getAbstract("FeedCardBase").instantiate() as Feed
|
||||
for field in OutGameStorage.upgradableFieldsValue:
|
||||
for field in extraFields:
|
||||
feed.fields.append(field)
|
||||
feed.fieldValues.append(OutGameStorage.upgradableFieldsValue[field])
|
||||
feed.fieldValues.append(extraFields[field])
|
||||
feed.freeToBuy = true
|
||||
feed.apply(player)
|
||||
return player
|
||||
@@ -572,12 +575,15 @@ static func generate(
|
||||
spawnPosition: Vector2,
|
||||
isMob: bool = true,
|
||||
spawnAsBoss: bool = false,
|
||||
addToWorld: bool = true
|
||||
addToWorld: bool = true,
|
||||
disName: String = ""
|
||||
):
|
||||
var instance: EntityBase = entity.instantiate()
|
||||
instance.position = spawnPosition
|
||||
instance.isBoss = spawnAsBoss
|
||||
instance.level = clamp((round(Wave.current * (1 + GameRule.entityLevelOffsetByWave * randf_range(-1, 1)))), 1, INF)
|
||||
if disName:
|
||||
instance.displayName = disName
|
||||
if isMob:
|
||||
instance.add_to_group("mobs")
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user