mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-28 06:51:54 +08:00
feat(组件管理): 重构组件加载逻辑并添加优先级函数
重构ComponentManager的get方法,使用MathTool.priority函数实现资源加载的优先级逻辑 将Wave类中的entity类型从PackedScene改为String,延迟加载角色资源 添加MathTool.priority静态方法用于处理空值情况
This commit is contained in:
+11
-11
@@ -1,6 +1,6 @@
|
|||||||
class_name Wave
|
class_name Wave
|
||||||
|
|
||||||
var entity: PackedScene
|
var entity: String
|
||||||
var minCount: int = 1
|
var minCount: int = 1
|
||||||
var maxCount: int = 1
|
var maxCount: int = 1
|
||||||
var isBoss: bool = false
|
var isBoss: bool = false
|
||||||
@@ -10,18 +10,18 @@ var per: int = 0
|
|||||||
|
|
||||||
static var current: int = 0
|
static var current: int = 0
|
||||||
static var WAVE_NORMAL = [
|
static var WAVE_NORMAL = [
|
||||||
Wave.create(ComponentManager.getCharacter("Hen"), 1, 5, false, 0, INF, 1),
|
Wave.create("Hen", 1, 5, false, 0, INF, 1),
|
||||||
Wave.create(ComponentManager.getCharacter("Chick"), 0, 0, true, 9, INF, 15),
|
Wave.create("Chick", 0, 0, true, 9, INF, 15),
|
||||||
Wave.create(ComponentManager.getCharacter("Bear"), 0, 0, true, 19, INF, 10),
|
Wave.create("Bear", 0, 0, true, 19, INF, 10),
|
||||||
Wave.create(ComponentManager.getCharacter("KukeMC"), 0, 0, true, 14, INF, 20),
|
Wave.create("KukeMC", 0, 0, true, 14, INF, 20),
|
||||||
]
|
]
|
||||||
static var WAVE_TESTBOSS_ALL = [
|
static var WAVE_TESTBOSS_ALL = [
|
||||||
Wave.create(ComponentManager.getCharacter("Chick"), 0, 0, true, 0, INF, 10),
|
Wave.create("Chick", 0, 0, true, 0, INF, 10),
|
||||||
Wave.create(ComponentManager.getCharacter("KukeMC"), 0, 0, true, 1, INF, 10),
|
Wave.create("KukeMC", 0, 0, true, 1, INF, 10),
|
||||||
Wave.create(ComponentManager.getCharacter("Bear"), 0, 0, true, 2, INF, 10),
|
Wave.create("Bear", 0, 0, true, 2, INF, 10),
|
||||||
]
|
]
|
||||||
static var WAVE_TESTBOSS_KUKE = [
|
static var WAVE_TESTBOSS_KUKE = [
|
||||||
Wave.create(ComponentManager.getCharacter("KukeMC"), 0, 0, true, 0, INF, 10),
|
Wave.create("KukeMC", 0, 0, true, 0, INF, 10),
|
||||||
]
|
]
|
||||||
static var WAVE_EMPTY = []
|
static var WAVE_EMPTY = []
|
||||||
static var data = WAVE_NORMAL
|
static var data = WAVE_NORMAL
|
||||||
@@ -33,7 +33,7 @@ static func customStart():
|
|||||||
furryr.currentFocusedBoss = kukemc
|
furryr.currentFocusedBoss = kukemc
|
||||||
kukemc.currentFocusedBoss = furryr
|
kukemc.currentFocusedBoss = furryr
|
||||||
static func create(
|
static func create(
|
||||||
entity_: PackedScene,
|
entity_: String,
|
||||||
minCount_: int = 1,
|
minCount_: int = 1,
|
||||||
maxCount_: int = 1,
|
maxCount_: int = 1,
|
||||||
isBoss_: bool = false,
|
isBoss_: bool = false,
|
||||||
@@ -61,7 +61,7 @@ static func spawn():
|
|||||||
for i in range(len(data)):
|
for i in range(len(data)):
|
||||||
var wave = data[i]
|
var wave = data[i]
|
||||||
for j in range(entityCountOf(wave)):
|
for j in range(entityCountOf(wave)):
|
||||||
EntityBase.generate(wave.entity, MathTool.randv2_range(500), true, wave.isBoss)
|
EntityBase.generate(ComponentManager.getCharacter(wave.entity), MathTool.randv2_range(500), true, wave.isBoss)
|
||||||
static func next():
|
static func next():
|
||||||
if current == 0:
|
if current == 0:
|
||||||
customStart()
|
customStart()
|
||||||
|
|||||||
@@ -28,17 +28,19 @@ static func init():
|
|||||||
themes[DirTool.getBasenameWithoutExtension(i)] = load(i)
|
themes[DirTool.getBasenameWithoutExtension(i)] = load(i)
|
||||||
for i in DirTool.listdir("res://resources/items"):
|
for i in DirTool.listdir("res://resources/items"):
|
||||||
itemTextures[DirTool.getBasenameWithoutExtension(i)] = load(i)
|
itemTextures[DirTool.getBasenameWithoutExtension(i)] = load(i)
|
||||||
static func getBullet(t: String):
|
static func getBullet(t: String) -> PackedScene:
|
||||||
return bullets[t]
|
return MathTool.priority(bullets.get(t, false), load("res://components/Bullets/%s.tscn" % t))
|
||||||
static func getCharacter(t: String):
|
static func getCharacter(t: String) -> PackedScene:
|
||||||
return characters[t]
|
return MathTool.priority(characters.get(t, false), load("res://components/Characters/%s.tscn" % t))
|
||||||
static func getEffect(t: String):
|
static func getEffect(t: String) -> PackedScene:
|
||||||
return effects[t]
|
return MathTool.priority(effects.get(t, false), load("res://components/Effects/%s.tscn" % t))
|
||||||
static func getFeed(i: int):
|
static func getFeed(i: int) -> PackedScene:
|
||||||
return feeds[i]
|
if i >= 0 and i < feeds.size():
|
||||||
static func getUIComponent(t: String):
|
return feeds[i]
|
||||||
return uiComponents[t]
|
return null
|
||||||
static func getTheme(t: String):
|
static func getUIComponent(t: String) -> PackedScene:
|
||||||
return themes[t]
|
return MathTool.priority(uiComponents.get(t, false), load("res://components/UI/%s.tscn" % t))
|
||||||
static func getItemTexture(t: String):
|
static func getTheme(t: String) -> Theme:
|
||||||
return itemTextures[t]
|
return MathTool.priority(themes.get(t, false), load("res://themes/%s.tscn" % t))
|
||||||
|
static func getItemTexture(t: String) -> Texture2D:
|
||||||
|
return MathTool.priority(itemTextures.get(t, false), load("res://resources/items/%s.svg" % t))
|
||||||
|
|||||||
@@ -34,3 +34,5 @@ static func getClosestIntersection(a: Vector2, b: Vector2, r: float) -> Vector2:
|
|||||||
return b
|
return b
|
||||||
var intersection = a + abNormalized * r
|
var intersection = a + abNormalized * r
|
||||||
return intersection
|
return intersection
|
||||||
|
static func priority(a, b):
|
||||||
|
return a if a else b
|
||||||
|
|||||||
Reference in New Issue
Block a user