2025-08-26 11:39:47 +08:00
|
|
|
extends Node2D
|
2025-08-26 17:28:20 +08:00
|
|
|
class_name WorldManager
|
2025-08-26 11:39:47 +08:00
|
|
|
|
2025-11-13 22:23:39 +08:00
|
|
|
static var rootNode: WorldManager
|
2025-08-26 11:39:47 +08:00
|
|
|
static var tree: SceneTree
|
2025-08-29 10:50:22 +08:00
|
|
|
static var runningTime: int = 0
|
2025-11-05 22:29:11 +08:00
|
|
|
static var peer: ENetMultiplayerPeer
|
2025-11-14 06:45:54 +08:00
|
|
|
static var spawner: MultiplayerSpawner
|
2025-08-26 11:39:47 +08:00
|
|
|
|
|
|
|
|
func _ready():
|
2025-08-26 12:21:09 +08:00
|
|
|
tree = get_tree()
|
|
|
|
|
rootNode = self
|
2025-11-14 06:45:54 +08:00
|
|
|
spawner = $%spawner
|
2025-09-21 13:05:20 +08:00
|
|
|
ComponentManager.init()
|
2025-11-15 07:33:06 +08:00
|
|
|
spawner.spawn_function = justReturn
|
2025-08-29 10:26:41 +08:00
|
|
|
func _physics_process(delta):
|
2025-08-29 10:30:20 +08:00
|
|
|
runningTime += delta * 1000
|
2025-12-14 14:07:29 +08:00
|
|
|
if canNextWave() and runningTime > 1000:
|
2025-11-13 22:39:36 +08:00
|
|
|
UIState.setPanel("MakeFeed")
|
|
|
|
|
|
|
|
|
|
@rpc("authority")
|
2025-12-14 15:01:01 +08:00
|
|
|
func doNextWave(waves: Array):
|
2025-11-13 22:39:36 +08:00
|
|
|
Wave.next(waves)
|
|
|
|
|
|
2025-12-14 14:07:29 +08:00
|
|
|
func canNextWave():
|
|
|
|
|
return len(EntityBase.getMobs()) == 0 and len(ItemDropped.getDropsCanCollet()) == 0
|
2025-12-14 15:01:01 +08:00
|
|
|
func spawnWave(center: Vector2):
|
|
|
|
|
var waves = Wave.spawn(center)
|
|
|
|
|
doNextWave(waves)
|
2025-11-13 22:39:36 +08:00
|
|
|
if MultiplayerState.isMultiplayer and multiplayer.is_server():
|
2025-12-14 15:01:01 +08:00
|
|
|
doNextWave.rpc(waves)
|
2025-11-14 06:45:54 +08:00
|
|
|
func spawn(node: Node):
|
|
|
|
|
if MultiplayerState.isMultiplayer:
|
|
|
|
|
if multiplayer.is_server():
|
2025-11-15 07:33:06 +08:00
|
|
|
spawner.spawn([node])
|
2025-11-14 06:45:54 +08:00
|
|
|
else:
|
|
|
|
|
add_child(node)
|
2025-11-15 07:33:06 +08:00
|
|
|
func justReturn(data):
|
|
|
|
|
return ArrayTool.parseEncodedObject(data)[0]
|
2025-08-29 10:26:41 +08:00
|
|
|
|
|
|
|
|
static func getTime():
|
|
|
|
|
return runningTime
|
2025-11-14 06:45:54 +08:00
|
|
|
static func spawnNode(node: Node):
|
|
|
|
|
rootNode.spawn(node)
|
2025-12-14 14:44:58 +08:00
|
|
|
static func isRelease() -> bool:
|
|
|
|
|
return !OS.is_debug_build()
|