mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-11 08:23:45 +00:00
refactor(*): Restructure game into reusable Arena/GameMode architecture with controller-driven ships, adding Free Play and Match modes
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
class_name Arena
|
||||
extends Node3D
|
||||
|
||||
# A reusable stadium: terrain, lighting, environment, two team goals, and
|
||||
# spawn markers. An arena holds no rules and no state — game modes query it
|
||||
# for spawn transforms and goals, then spawn ships/ball themselves.
|
||||
|
||||
|
||||
func _ready():
|
||||
add_to_group("arena")
|
||||
|
||||
|
||||
func get_ball_spawn() -> Transform3D:
|
||||
return $BallSpawn.global_transform
|
||||
|
||||
|
||||
func get_ship_spawns(team: int) -> Array[Transform3D]:
|
||||
var spawns: Array[Transform3D] = []
|
||||
var container := get_node_or_null("SpawnsTeam%d" % team)
|
||||
if container:
|
||||
for child in container.get_children():
|
||||
if child is Marker3D:
|
||||
spawns.append(child.global_transform)
|
||||
return spawns
|
||||
|
||||
|
||||
func get_goals() -> Array[Goal]:
|
||||
var goals: Array[Goal] = []
|
||||
for child in get_children():
|
||||
if child is Goal:
|
||||
goals.append(child)
|
||||
return goals
|
||||
Reference in New Issue
Block a user