diff --git a/scripts/Contents/Bullets/LGBTBullet.gd b/scripts/Contents/Bullets/LGBTBullet.gd index 1cb89f5..e5f336d 100644 --- a/scripts/Contents/Bullets/LGBTBullet.gd +++ b/scripts/Contents/Bullets/LGBTBullet.gd @@ -14,4 +14,4 @@ func ai(): PresetBulletAI.trace(self, tracer.getTrackingAnchor(), clamp(speed / 50 * tracePower, 0, 1)) PresetBulletAI.forward(self, rotation) func destroy(_b): - EffectController.create(load("res://components/Effects/LGBTBoom.tscn"), position).shot() + EffectController.create(ComponentManager.getEffect("LGBTBoom"), position).shot() diff --git a/scripts/Contents/Bullets/NuclearBomb.gd b/scripts/Contents/Bullets/NuclearBomb.gd index 6574178..158d8cc 100644 --- a/scripts/Contents/Bullets/NuclearBomb.gd +++ b/scripts/Contents/Bullets/NuclearBomb.gd @@ -21,7 +21,7 @@ func ai(): warn.size = Vector2.ONE * 2 * radius * (timeLived() / countdown) label.text = "NUCLEAR WARNING %.1f" % ((countdown - timeLived()) / 1000) func destroy(_b): - EffectController.create(load("res://components/Effects/NuclearExplosion.tscn"), global_position).shot() + EffectController.create(ComponentManager.getEffect("NuclearExplosion"), global_position).shot() hitbox.disabled = false CameraManager.shake(5000, 500, func(_c, t, r): return t * r) # 震屏强度随进度递减 await TickTool.frame(5) diff --git a/scripts/Contents/Bullets/PurpleCrystal.gd b/scripts/Contents/Bullets/PurpleCrystal.gd index 8412824..52beffb 100644 --- a/scripts/Contents/Bullets/PurpleCrystal.gd +++ b/scripts/Contents/Bullets/PurpleCrystal.gd @@ -3,12 +3,12 @@ extends BulletBase func ai(): PresetBulletAI.forward(self, rotation) func destroy(_beacuseMap: bool): - var eff = EffectController.create(load("res://components/Effects/PurpleCrystalExplosion.tscn"), global_position) + var eff = EffectController.create(ComponentManager.getEffect("PurpleCrystalExplosion"), global_position) eff.rotation = rotation eff.shot() func split(index, total, _last): BulletBase.generate( - load("res://components/Bullets/PurpleCrystal.tscn"), + ComponentManager.getBullet("PurpleCrystal"), launcher, position, rotation + deg_to_rad(360 / total * index), @@ -17,7 +17,7 @@ func split(index, total, _last): ) func refract(entity, _index, _total, _last): BulletBase.generate( - load("res://components/Bullets/PurpleCrystal.tscn"), + ComponentManager.getBullet("PurpleCrystal"), launcher, position, position.angle_to_point(entity.position) if is_instance_valid(entity) else randf_range(0, deg_to_rad(360)), diff --git a/scripts/Contents/Characters/Bear.gd b/scripts/Contents/Characters/Bear.gd index 6db28c8..e344cc7 100644 --- a/scripts/Contents/Characters/Bear.gd +++ b/scripts/Contents/Characters/Bear.gd @@ -39,7 +39,7 @@ func attack(type): playSound("attack0") for i in randi_range(20, 30): if !is_instance_valid(currentFocusedBoss): return false - for bullet in BulletBase.generate(load("res://components/Bullets/BossAttack/Bear/ArrowSeven.tscn"), self, findWeaponAnchor("normal"), deg_to_rad(randf_range(0, 360))): + for bullet in BulletBase.generate(ComponentManager.getBullet("ArrowSeven"), self, findWeaponAnchor("normal"), deg_to_rad(randf_range(0, 360))): bullet.tracer = currentFocusedBoss bullet.position += MathTool.randv2_range(50) await TickTool.millseconds(50) @@ -48,10 +48,10 @@ func attack(type): await sprintTo(currentFocusedBoss.position - Vector2(MathTool.randc_from([-300, 300]), 300), 0.25) var count = randi_range(6, 8) for i in range(count): - BulletBase.generate(load("res://components/Bullets/BossAttack/Bear/SunDance.tscn"), self, weaponPos, deg_to_rad(360.0 / count * i)) + BulletBase.generate(ComponentManager.getBullet("SunDance"), self, weaponPos, deg_to_rad(360.0 / count * i)) elif type == 2: for i in range(13): - for bullet in BulletBase.generate(load("res://components/Bullets/BossAttack/Bear/ForeverRainbow.tscn"), self, weaponPos, 0): + for bullet in BulletBase.generate(ComponentManager.getBullet("ForeverRainbow"), self, weaponPos, 0): bullet.rotation = 360 / 13.0 * i elif type == 3: if !is_instance_valid(currentFocusedBoss): return false @@ -61,7 +61,7 @@ func attack(type): currentInvinsible = true playSound("attack3") await TickTool.millseconds(500) - BulletBase.generate(load("res://components/Bullets/BearSprint.tscn"), self, weaponPos, 0) + BulletBase.generate(ComponentManager.getBullet("BearSprint"), self, weaponPos, 0) await trySprint() sprintParticle.emitting = false canRunAi = true @@ -73,7 +73,7 @@ func attack(type): var count = randi_range(8, 12) for i in range(count): if !is_instance_valid(currentFocusedBoss): return false - for bullet in BulletBase.generate(load("res://components/Bullets/BossAttack/Bear/ArrowSeven.tscn"), self, findWeaponAnchor("normal"), deg_to_rad(360.0 / count * i)): + for bullet in BulletBase.generate(ComponentManager.getBullet("ArrowSeven"), self, findWeaponAnchor("normal"), deg_to_rad(360.0 / count * i)): bullet.tracer = currentFocusedBoss await TickTool.millseconds(830.0 / count) return false @@ -82,7 +82,7 @@ func attack(type): var count = randi_range(20, 30) for i in range(count): if !is_instance_valid(currentFocusedBoss): return false - for bullet in BulletBase.generate(load("res://components/Bullets/BossAttack/Bear/LightGun.tscn"), self, currentFocusedBoss.position, 0): + for bullet in BulletBase.generate(ComponentManager.getBullet("LightGun"), self, currentFocusedBoss.position, 0): bullet.rotation = deg_to_rad(360.0 / count * i) await TickTool.millseconds(1670.0 / count) return false @@ -90,7 +90,7 @@ func attack(type): playSound("attack6") for i in 16: if !is_instance_valid(currentFocusedBoss): return false - for bullet in BulletBase.generate(load("res://components/Bullets/BossAttack/Bear/LightGun.tscn"), self, currentFocusedBoss.position, 0): + for bullet in BulletBase.generate(ComponentManager.getBullet("LightGun"), self, currentFocusedBoss.position, 0): bullet.position += MathTool.randv2_range(600) bullet.look_at(currentFocusedBoss.position + MathTool.randv2_range(50)) await TickTool.millseconds(100) @@ -102,7 +102,7 @@ func attack(type): if !is_instance_valid(currentFocusedBoss): return false playSound("attack7") for i in 16: - for bullet in BulletBase.generate(load("res://components/Bullets/BossAttack/Bear/LightGun.tscn"), self, currentFocusedBoss.position, 0): + for bullet in BulletBase.generate(ComponentManager.getBullet("LightGun"), self, currentFocusedBoss.position, 0): bullet.rotation_degrees += initAngle bullet.rotation -= angle / 2 bullet.rotation += angle / 16 * i diff --git a/scripts/Contents/Characters/Chick.gd b/scripts/Contents/Characters/Chick.gd index 1a5d2ce..a438491 100644 --- a/scripts/Contents/Characters/Chick.gd +++ b/scripts/Contents/Characters/Chick.gd @@ -26,19 +26,19 @@ func attack(type): if type == 0: var weaponPos = findWeaponAnchor("normal") for i in randi_range(10, 20): - BulletBase.generate(load("res://components/Bullets/Diamond.tscn"), self, weaponPos + MathTool.randv2_range(20), rotation + deg_to_rad(randf_range(-90, 90))) + BulletBase.generate(ComponentManager.getBullet("Diamond"), self, weaponPos + MathTool.randv2_range(20), rotation + deg_to_rad(randf_range(-90, 90))) elif type == 1: var laserCount = randi_range(2, 4) for i in laserCount: - BulletBase.generate(load("res://components/Bullets/ChickLaser.tscn"), self, texture.global_position, deg_to_rad(360.0 / laserCount * i)) + BulletBase.generate(ComponentManager.getBullet("ChickLaser"), self, texture.global_position, deg_to_rad(360.0 / laserCount * i)) elif type == 2: var weaponPos = findWeaponAnchor("normal") var target = weaponPos.angle_to_point(currentFocusedBoss.position) firepot.global_rotation = target firepot.shot() - BulletBase.generate(load("res://components/Bullets/FireScan.tscn"), self, weaponPos, target) + BulletBase.generate(ComponentManager.getBullet("FireScan"), self, weaponPos, target) elif type == 3: - BulletBase.generate(load("res://components/Bullets/ChickSprint.tscn"), self, position, 0) + BulletBase.generate(ComponentManager.getBullet("ChickSprint"), self, position, 0) trySprint() return true func sprint(): diff --git a/scripts/Contents/Characters/Hen.gd b/scripts/Contents/Characters/Hen.gd index 97d595c..d6a86f4 100644 --- a/scripts/Contents/Characters/Hen.gd +++ b/scripts/Contents/Characters/Hen.gd @@ -14,5 +14,5 @@ func attack(type): if type == 0: var weaponPos = findWeaponAnchor("normal") for i in randi_range(1, 4): - BulletBase.generate(load("res://components/Bullets/Star.tscn"), self, weaponPos, (currentFocusedBoss.position - position).angle()) + BulletBase.generate(ComponentManager.getBullet("Star"), self, weaponPos, (currentFocusedBoss.position - position).angle()) return true diff --git a/scripts/Contents/Characters/KukeChild.gd b/scripts/Contents/Characters/KukeChild.gd index f713933..bdb36f1 100644 --- a/scripts/Contents/Characters/KukeChild.gd +++ b/scripts/Contents/Characters/KukeChild.gd @@ -16,9 +16,9 @@ func ai(): tryKill() func attack(type): if type == 0: - BulletBase.generate(load("res://components/Bullets/PurpleCrystalSmall.tscn"), self, findWeaponAnchor("normal"), position.angle_to_point(currentFocusedBoss.position)) + BulletBase.generate(ComponentManager.getBullet("PurpleCrystalSmall"), self, findWeaponAnchor("normal"), position.angle_to_point(currentFocusedBoss.position)) await TickTool.millseconds(randi_range(5, 25)) elif type == 1: - BulletBase.generate(load("res://components/Bullets/BossAttack/KukeMC/HeavyCrystal.tscn"), self, findWeaponAnchor("normal"), position.angle_to_point(currentFocusedBoss.position)) + BulletBase.generate(ComponentManager.getBullet("HeavyCrystal"), self, findWeaponAnchor("normal"), position.angle_to_point(currentFocusedBoss.position)) func kill(): masterMine.tryHeal(100) diff --git a/scripts/Contents/Characters/KukeMC.gd b/scripts/Contents/Characters/KukeMC.gd index 63aa4a7..58e4f1a 100644 --- a/scripts/Contents/Characters/KukeMC.gd +++ b/scripts/Contents/Characters/KukeMC.gd @@ -34,11 +34,11 @@ func attack(type): if type == 0: for i in randi_range(8, 16): fields[FieldStore.Entity.OFFSET_SHOOT] = 25 - BulletBase.generate(load("res://components/Bullets/PurpleCrystal.tscn"), self, findWeaponAnchor("normal"), position.angle_to_point(currentFocusedBoss.position)) + BulletBase.generate(ComponentManager.getBullet("PurpleCrystal"), self, findWeaponAnchor("normal"), position.angle_to_point(currentFocusedBoss.position)) await TickTool.millseconds(randi_range(10, 50)) elif type == 1 and health < fields[FieldStore.Entity.MAX_HEALTH] * 0.5 and canSummon: for i in randi_range(1, 2): - var child = EntityBase.generate(load("res://components/Characters/KukeChild.tscn"), position + MathTool.randv2_range(500)) + var child = EntityBase.generate(ComponentManager.getCharacter("KukeChild"), position + MathTool.randv2_range(500)) child.currentFocusedBoss = currentFocusedBoss child.masterMine = self elif type == 2: @@ -47,7 +47,7 @@ func attack(type): for bulletIndex in countOfBullet: for branchIndex in countOfBranch: fields[FieldStore.Entity.OFFSET_SHOOT] = 0 - BulletBase.generate(load("res://components/Bullets/PurpleCrystal.tscn"), self, findWeaponAnchor("normal"), deg_to_rad(360.0 / countOfBullet * bulletIndex + 360.0 / countOfBranch * branchIndex)) + BulletBase.generate(ComponentManager.getBullet("PurpleCrystal"), self, findWeaponAnchor("normal"), deg_to_rad(360.0 / countOfBullet * bulletIndex + 360.0 / countOfBranch * branchIndex)) await TickTool.millseconds(100) elif type == 3: - BulletBase.generate(load("res://components/Bullets/BossAttack/KukeMC/HeavyCrystal.tscn"), self, findWeaponAnchor("normal"), position.angle_to_point(currentFocusedBoss.position)) + BulletBase.generate(ComponentManager.getBullet("HeavyCrystal"), self, findWeaponAnchor("normal"), position.angle_to_point(currentFocusedBoss.position)) diff --git a/scripts/Contents/Wave.gd b/scripts/Contents/Wave.gd index b2183a6..d97cfe9 100644 --- a/scripts/Contents/Wave.gd +++ b/scripts/Contents/Wave.gd @@ -10,26 +10,26 @@ var per: int = 0 static var current: int = 0 static var WAVE_NORMAL = [ - Wave.create(load("res://components/Characters/Hen.tscn"), 1, 5, false, 0, INF, 1), - Wave.create(load("res://components/Characters/Chick.tscn"), 0, 0, true, 9, INF, 15), - Wave.create(load("res://components/Characters/Bear.tscn"), 0, 0, true, 19, INF, 10), - Wave.create(load("res://components/Characters/KukeMC.tscn"), 0, 0, true, 14, INF, 20), + Wave.create(ComponentManager.getCharacter("Hen"), 1, 5, false, 0, INF, 1), + Wave.create(ComponentManager.getCharacter("Chick"), 0, 0, true, 9, INF, 15), + Wave.create(ComponentManager.getCharacter("Bear"), 0, 0, true, 19, INF, 10), + Wave.create(ComponentManager.getCharacter("KukeMC"), 0, 0, true, 14, INF, 20), ] static var WAVE_TESTBOSS_ALL = [ - Wave.create(load("res://components/Characters/Chick.tscn"), 0, 0, true, 0, INF, 10), - Wave.create(load("res://components/Characters/KukeMC.tscn"), 0, 0, true, 1, INF, 10), - Wave.create(load("res://components/Characters/Bear.tscn"), 0, 0, true, 2, INF, 10), + Wave.create(ComponentManager.getCharacter("Chick"), 0, 0, true, 0, INF, 10), + Wave.create(ComponentManager.getCharacter("KukeMC"), 0, 0, true, 1, INF, 10), + Wave.create(ComponentManager.getCharacter("Bear"), 0, 0, true, 2, INF, 10), ] static var WAVE_TESTBOSS_KUKE = [ - Wave.create(load("res://components/Characters/KukeMC.tscn"), 0, 0, true, 0, INF, 10), + Wave.create(ComponentManager.getCharacter("KukeMC"), 0, 0, true, 0, INF, 10), ] static var WAVE_EMPTY = [] static var data = WAVE_NORMAL static func customStart(): if false: - var furryr = EntityBase.generate(load("res://components/Characters/Bear.tscn"), MathTool.randv2_range(500), true, false) - var kukemc = EntityBase.generate(load("res://components/Characters/KukeMC.tscn"), MathTool.randv2_range(500), true, false) + var furryr = EntityBase.generate(ComponentManager.getCharacter("Bear"), MathTool.randv2_range(500), true, false) + var kukemc = EntityBase.generate(ComponentManager.getCharacter("KukeMC"), MathTool.randv2_range(500), true, false) furryr.currentFocusedBoss = kukemc kukemc.currentFocusedBoss = furryr static func create( diff --git a/scripts/Contents/Weapons/BigLaser.gd b/scripts/Contents/Weapons/BigLaser.gd index 88011d5..67c28f4 100644 --- a/scripts/Contents/Weapons/BigLaser.gd +++ b/scripts/Contents/Weapons/BigLaser.gd @@ -8,7 +8,7 @@ func update(to: int, origin: Dictionary, _entity: EntityBase): return origin func attack(entity: EntityBase): var weaponPos = entity.findWeaponAnchor("normal") - for bullet in BulletBase.generate(load("res://components/Bullets/BigLaser.tscn"), entity, weaponPos, (get_global_mouse_position() - weaponPos).angle()): + for bullet in BulletBase.generate(ComponentManager.getBullet("BigLaser"), entity, weaponPos, (get_global_mouse_position() - weaponPos).angle()): var bigLaser: BigLaser = bullet bigLaser.dotTime = readStore("time") * 1000 bigLaser.damage = readStore("atk") diff --git a/scripts/Contents/Weapons/LGBTWeapon.gd b/scripts/Contents/Weapons/LGBTWeapon.gd index 5aeff88..7bfb661 100644 --- a/scripts/Contents/Weapons/LGBTWeapon.gd +++ b/scripts/Contents/Weapons/LGBTWeapon.gd @@ -14,7 +14,7 @@ func attack(entity: EntityBase): var facingAngle = (get_global_mouse_position() - weaponPos).angle() var startAngle = facingAngle - deg_to_rad(readStore("angle") * (readStore("count") / 2)) for i in range(int(readStore("count"))): - for j in BulletBase.generate(load("res://components/Bullets/LGBTBullet.tscn"), entity, weaponPos, startAngle + deg_to_rad(readStore("angle") * i)): + for j in BulletBase.generate(ComponentManager.getBullet("LGBTBullet"), entity, weaponPos, startAngle + deg_to_rad(readStore("angle") * i)): var bullet: LGBTBullet = j bullet.damage = readStore("atk") bullet.tracer = EntityTool.findClosetEntity(get_global_mouse_position(), get_tree(), !entity.isPlayer(), entity.isPlayer()) diff --git a/scripts/Contents/Weapons/Meowmere.gd b/scripts/Contents/Weapons/Meowmere.gd index 6508d64..4f15e30 100644 --- a/scripts/Contents/Weapons/Meowmere.gd +++ b/scripts/Contents/Weapons/Meowmere.gd @@ -7,7 +7,7 @@ func update(to, origin, _entity): return origin func attack(entity: EntityBase): var weaponPos = entity.findWeaponAnchor("normal") - for i in BulletBase.generate(load("res://components/Bullets/Meowmere.tscn"), entity, weaponPos, weaponPos.angle_to_point(get_global_mouse_position())): + for i in BulletBase.generate(ComponentManager.getBullet("Meowmere"), entity, weaponPos, weaponPos.angle_to_point(get_global_mouse_position())): i.damage = readStore("atk") for i in readStore("count"): - BulletBase.generate(load("res://components/Bullets/RainbowCat.tscn"), entity, weaponPos, weaponPos.angle_to_point(get_global_mouse_position())) + BulletBase.generate(ComponentManager.getBullet("RainbowCat"), entity, weaponPos, weaponPos.angle_to_point(get_global_mouse_position())) diff --git a/scripts/Contents/Weapons/MushroomPickaxe.gd b/scripts/Contents/Weapons/MushroomPickaxe.gd index d8e38bf..e79625b 100644 --- a/scripts/Contents/Weapons/MushroomPickaxe.gd +++ b/scripts/Contents/Weapons/MushroomPickaxe.gd @@ -8,7 +8,7 @@ func update(to: int, origin: Dictionary, _entity: EntityBase): return origin func attack(entity: EntityBase): var weaponPos = entity.findWeaponAnchor("normal") - for j in BulletBase.generate(load("res://components/Bullets/MushroomPickaxe.tscn"), entity, entity.texture.global_position, weaponPos.angle_to_point(get_global_mouse_position())): + for j in BulletBase.generate(ComponentManager.getBullet("MushroomPickaxe"), entity, entity.texture.global_position, weaponPos.angle_to_point(get_global_mouse_position())): var bullet: MushroomPickaxe = j bullet.damage = readStore("atk") bullet.rate = readStore("rate") diff --git a/scripts/Contents/Weapons/NuclearBomb.gd b/scripts/Contents/Weapons/NuclearBomb.gd index 70f5f2a..1d468b6 100644 --- a/scripts/Contents/Weapons/NuclearBomb.gd +++ b/scripts/Contents/Weapons/NuclearBomb.gd @@ -7,7 +7,7 @@ func update(to: int, origin: Dictionary, _entity: EntityBase): return origin func attack(entity: EntityBase): var weaponPos = entity.findWeaponAnchor("normal") - for j in BulletBase.generate(load("res://components/Bullets/NuclearBomb.tscn"), entity, weaponPos, weaponPos.angle_to_point(get_global_mouse_position())): + for j in BulletBase.generate(ComponentManager.getBullet("NuclearBomb"), entity, weaponPos, weaponPos.angle_to_point(get_global_mouse_position())): var bullet: NuclearBomb = j bullet.damage = readStore("atk") bullet.radius = readStore("radius") diff --git a/scripts/Contents/Weapons/PurpleCrystal.gd b/scripts/Contents/Weapons/PurpleCrystal.gd index 0ada227..2676ab7 100644 --- a/scripts/Contents/Weapons/PurpleCrystal.gd +++ b/scripts/Contents/Weapons/PurpleCrystal.gd @@ -7,6 +7,6 @@ func update(to: int, origin: Dictionary, _entity: EntityBase): return origin func attack(entity: EntityBase): var weaponPos = entity.findWeaponAnchor("normal") - for bullet in BulletBase.generate(load("res://components/Bullets/PurpleCrystal.tscn"), entity, weaponPos, (get_global_mouse_position() - weaponPos).angle()): + for bullet in BulletBase.generate(ComponentManager.getBullet("PurpleCrystal"), entity, weaponPos, (get_global_mouse_position() - weaponPos).angle()): bullet.damage = readStore("atk") return true diff --git a/scripts/Contents/Weapons/VectorStarWeapon.gd b/scripts/Contents/Weapons/VectorStarWeapon.gd index 690e5ca..2e6ffde 100644 --- a/scripts/Contents/Weapons/VectorStarWeapon.gd +++ b/scripts/Contents/Weapons/VectorStarWeapon.gd @@ -11,7 +11,7 @@ func update(to: int, origin: Dictionary, _entity: EntityBase): func attack(entity: EntityBase): var weaponPos = entity.findWeaponAnchor("normal") for i in range(int(randi_range(readStore("mincount"), readStore("maxcount")))): - for j in BulletBase.generate(load("res://components/Bullets/VectorStar.tscn"), entity, weaponPos, deg_to_rad(randf_range(0, 360))): + for j in BulletBase.generate(ComponentManager.getBullet("VectorStar"), entity, weaponPos, deg_to_rad(randf_range(0, 360))): var bullet: VectorStar = j bullet.damage = readStore("atk") bullet.tracer = EntityTool.findClosetEntity(get_global_mouse_position(), get_tree(), !entity.isPlayer(), entity.isPlayer()) diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index 3ca3000..a745dc9 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -266,7 +266,7 @@ func tryAttack(type: int, needChargeUp: bool = false): if state: if needChargeUp: charginup = true - await EffectController.create(load("res://components/Effects/AttackStar.tscn"), damageAnchor.global_position).shot() + await EffectController.create(ComponentManager.getEffect("AttackStar"), damageAnchor.global_position).shot() charginup = false if isPlayer(): if await weapon.tryAttack(self): @@ -317,7 +317,7 @@ func tryDie(by: BulletBase = null): if isPlayer(): if UIState.player == self: UIState.setPanel("GameOver", [displayName, by.launcher.displayName, by.displayName]) - EffectController.create(load("res://components/Effects/DeadBlood.tscn"), texture.global_position).shot() + EffectController.create(ComponentManager.getEffect("DeadBlood"), texture.global_position).shot() await die() died.emit() queue_free()