#84: move 215 root files into a folder hierarchy
Everything lived in one flat directory, so a diff gave no clue what area it touched and finding the file you wanted meant knowing its exact name. Twelve folders now, grouped by what a thing IS rather than what type it is - a vessel's definition, its component scenes and its upgrade resources sit together, because that is the set you read when you change one of them. buildings core controllers enemies logistics planets resources shaders surface ui vessels vfx world 332 files moved and every res:// reference rewritten - 306 files touched, including the autoload and main-scene paths in project.godot. Nothing renamed: this is purely where files sit, so the diff is a pile of pure moves and no behaviour is buried in it. ui_theme.tres, icon.svg and web_shell.html stay at the root, where Godot and the export preset expect them. Verified three ways, because a suite alone would not have caught all of it: the full 117 pass, the web export builds clean, and the game renders. The export is why that matters. The FIRST export after the move failed with "Attempt to open script 'res://GameState.gd'" - the old path - while project.godot on disk plainly said res://core/GameState.gd. That is this project's documented Android FUSE mtime trap: Godot served a cached copy of a file whose content had changed. A `touch` fixed it. Nothing in the test suite would have found that, because the suite runs from a copy on a native filesystem - the one place the bug cannot happen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
baac11ae8b
commit
2f161621c3
495 changed files with 571 additions and 567 deletions
|
|
@ -10,11 +10,11 @@ func _ready() -> void:
|
|||
GameState.planet_id = "artillery_preview_gas"
|
||||
GameState.planet_definition_id = "gas_giant"
|
||||
GameState.surviving_ship_count = 3
|
||||
var surface: Node = load("res://PlanetSurface.tscn").instantiate()
|
||||
var surface: Node = load("res://surface/PlanetSurface.tscn").instantiate()
|
||||
surface.get_node("SurfaceController").fade_duration = 0.0
|
||||
add_child(surface)
|
||||
|
||||
var shell: Node = load("res://ArtilleryShell.tscn").instantiate()
|
||||
var shell: Node = load("res://enemies/ArtilleryShell.tscn").instantiate()
|
||||
shell.aoe_radius = 220.0
|
||||
surface.add_child(shell)
|
||||
# Frozen with the shell part-way to its target, which is the moment the
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@ func _ready() -> void:
|
|||
GameState.planet_id = "artillery_preview_rocky"
|
||||
GameState.planet_definition_id = "rocky"
|
||||
GameState.surviving_ship_count = 3
|
||||
var surface: Node = load("res://PlanetSurface.tscn").instantiate()
|
||||
var surface: Node = load("res://surface/PlanetSurface.tscn").instantiate()
|
||||
surface.get_node("SurfaceController").fade_duration = 0.0
|
||||
add_child(surface)
|
||||
|
||||
var shell: Node = load("res://ArtilleryShell.tscn").instantiate()
|
||||
var shell: Node = load("res://enemies/ArtilleryShell.tscn").instantiate()
|
||||
shell.aoe_radius = 220.0
|
||||
surface.add_child(shell)
|
||||
# Frozen with the shell part-way to its target, which is the moment the
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ func _ready() -> void:
|
|||
|
||||
|
||||
func _spawn(planet_name: String, definition_id: String, at: Vector2, shape_seed: int) -> void:
|
||||
var planet: Node2D = load("res://Planet.tscn").instantiate()
|
||||
var planet: Node2D = load("res://planets/Planet.tscn").instantiate()
|
||||
planet.planet_name = planet_name
|
||||
planet.definition_id = definition_id
|
||||
planet.shape_seed = shape_seed
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ func _ready() -> void:
|
|||
# legible at full strength.
|
||||
# Partly researched, to show the menu repacking around what is hidden.
|
||||
GameState.unlocked = ["shipyards", "logistics"]
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("UI/BuildMenu").visible = true
|
||||
main.get_node("BuildController")._refresh_build_status()
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ func _ready() -> void:
|
|||
GameState.rocks = 500
|
||||
GameState.add_building(GameState.BUILDING_MOTHERSHIP, Vector2(-900.0, 0.0))
|
||||
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("AsteroidField").set_process(false)
|
||||
main.get_node("EnemySpawner").set_process(false)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ extends Node2D
|
|||
# Preloaded by path rather than an `is CapturePoint` check - this preview
|
||||
# runs through screenshot.sh, which (unlike run_tests.sh) does not run an
|
||||
# import pass first, so the global class_name cache may not be warm yet.
|
||||
const CAPTURE_POINT_SCRIPT = preload("res://CapturePoint.gd")
|
||||
const CAPTURE_POINT_SCRIPT = preload("res://surface/CapturePoint.gd")
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
|
|
@ -12,7 +12,7 @@ func _ready() -> void:
|
|||
GameState.planet_definition_id = "rocky"
|
||||
GameState.surviving_ship_count = 3
|
||||
GameState.rocks = 128
|
||||
var surface: Node = load("res://PlanetSurface.tscn").instantiate()
|
||||
var surface: Node = load("res://surface/PlanetSurface.tscn").instantiate()
|
||||
surface.get_node("SurfaceController").fade_duration = 0.0
|
||||
add_child(surface)
|
||||
|
||||
|
|
|
|||
|
|
@ -13,4 +13,4 @@ func _ready() -> void:
|
|||
GameState.gas = 46
|
||||
GameState.fleet_cargo = 34
|
||||
GameState.fleet_gas_cargo = 17
|
||||
add_child(load("res://Main.tscn").instantiate())
|
||||
add_child(load("res://world/Main.tscn").instantiate())
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ func _ready() -> void:
|
|||
GameState.extractors.clear()
|
||||
GameState.rocks = 500
|
||||
GameState.vessel_levels = {"unlock_shield": 1, "unlock_gas_bomber": 1, "unlock_carrier": 1}
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("UI/CraftMenu").visible = true
|
||||
main.get_node("BuildController")._refresh_craft_status()
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ func _ready() -> void:
|
|||
GameState.rocks = 500
|
||||
GameState.vessel_levels = {"unlock_shield": 1, "unlock_gas_bomber": 1, "unlock_carrier": 1}
|
||||
GameState.stored_vessels = ["shield", "gas_bomber", "carrier"]
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
var fleet: Node = main.get_node("Fleet")
|
||||
fleet.spawn_ships(2, Vector2.ZERO, PackedStringArray(["interceptor", "carrier"]))
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@ extends Node
|
|||
func _ready() -> void:
|
||||
GameState.buildings.clear()
|
||||
GameState.extractors.clear()
|
||||
var main: Node2D = load("res://Main.tscn").instantiate()
|
||||
var main: Node2D = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("AsteroidField").set_process(false)
|
||||
main.get_node("EnemySpawner").set_process(false)
|
||||
main.get_node("LandingController").set_process(false)
|
||||
|
||||
var building: Node2D = load("res://Building.tscn").instantiate()
|
||||
var building: Node2D = load("res://buildings/Building.tscn").instantiate()
|
||||
building.definition_id = GameState.BUILDING_MOTHERSHIP
|
||||
building.position = Vector2(0, 420)
|
||||
main.add_child(building)
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ func _ready() -> void:
|
|||
GameState.fleet_gas_cargo = 12
|
||||
GameState.unlocked = ["shipyards", "logistics", "freight"]
|
||||
GameState.vessel_levels["unlock_gas_bomber"] = 1
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("BackgroundLayer").visible = false
|
||||
main.get_node("Fleet").visible = false
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ const CELLS: Array = [
|
|||
|
||||
func _ready() -> void:
|
||||
RenderingServer.set_default_clear_color(Color(0.02, 0.03, 0.06))
|
||||
var building_scene: PackedScene = load("res://Building.tscn")
|
||||
var building_scene: PackedScene = load("res://buildings/Building.tscn")
|
||||
for i in range(CELLS.size()):
|
||||
var cell: Dictionary = CELLS[i]
|
||||
var b: Node2D = building_scene.instantiate()
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@ extends Node2D
|
|||
# others are meant to be more distinctive than.
|
||||
# bash tests/screenshot.sh res://tests/_enemy_gallery_preview.tscn /tmp/enemies.png 15 720x1280
|
||||
|
||||
const ENEMY_DEFINITIONS = preload("res://EnemyDefinitions.gd")
|
||||
const ENEMY_DEFINITIONS = preload("res://enemies/EnemyDefinitions.gd")
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
var enemy_scene: PackedScene = load("res://Enemy.tscn")
|
||||
var enemy_scene: PackedScene = load("res://enemies/Enemy.tscn")
|
||||
var ids: Array = ["chaser", "sniper", "artillery", "turret_spawner", "enemy_mothership"]
|
||||
var y: float = 200.0
|
||||
for id in ids:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ func _ready() -> void:
|
|||
GameState.transporters.clear()
|
||||
GameState.fleet_cargo = 9
|
||||
GameState.fleet_gas_cargo = 4
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
var planet: Node2D
|
||||
for planets in main.get_node("PlanetField").populated_chunks.values():
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ func _ready() -> void:
|
|||
GameState.rocks = 200
|
||||
GameState.gas = 30
|
||||
GameState.fleet_cargo = 0
|
||||
var scene: Node = load("res://Main.tscn").instantiate()
|
||||
var scene: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(scene)
|
||||
var fleet: Node = scene.get_node("Fleet")
|
||||
fleet.spawn_ships(3, Vector2.ZERO, PackedStringArray(["interceptor", "interceptor", "shield"]))
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ func _initialize() -> void:
|
|||
print("gui/theme/custom = '%s'" % ProjectSettings.get_setting("gui/theme/custom", ""))
|
||||
print("gui/theme/custom_font = '%s'" % ProjectSettings.get_setting("gui/theme/custom_font", ""))
|
||||
|
||||
var scene: Node = load("res://Main.tscn").instantiate()
|
||||
var scene: Node = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
|
||||
for path in ["UI/BuildMenu/InfoPopup/Panel/TitleLabel",
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ func _ready() -> void:
|
|||
GameState.extractors.clear()
|
||||
GameState.transporters.clear()
|
||||
GameState.vessel_levels["unlock_gas_bomber"] = 1
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("BackgroundLayer").visible = false
|
||||
main.get_node("AsteroidField").visible = false
|
||||
|
|
@ -37,7 +37,7 @@ func _ready() -> void:
|
|||
drag.position = press.position + Vector2(-245, -235)
|
||||
skill.handle_drag(drag)
|
||||
for offset in [Vector2(-65, 0), Vector2(45, -45), Vector2(55, 65)]:
|
||||
var enemy: Node = load("res://Enemy.tscn").instantiate()
|
||||
var enemy: Node = load("res://enemies/Enemy.tscn").instantiate()
|
||||
enemy.position = skill.aim_target + offset
|
||||
main.add_child(enemy)
|
||||
enemy.speed = 0.0 # after add_child - _ready() sets it from the definition
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ func _ready() -> void:
|
|||
GameState.extractors.clear()
|
||||
GameState.rocks = 500
|
||||
GameState.unlocked = ["shipyards", "logistics", "coordination", "freight", "vessel_science", "power_systems"]
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("UI/BuildMenu").visible = true
|
||||
main.get_node("BuildController")._refresh_build_status()
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ func _ready() -> void:
|
|||
GameState.fleet_cargo = 24
|
||||
GameState.fleet_gas_cargo = 12
|
||||
GameState.unlocked = ["shipyards", "logistics", "freight", "power_systems"]
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("BuildingField").place(GameState.BUILDING_GAS_BURNER, Vector2(400.0, 0.0))
|
||||
var burner_id: int = int(GameState.buildings[-1].id)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,6 @@ func _ready() -> void:
|
|||
GameState.gas = 46
|
||||
GameState.fleet_cargo = 34
|
||||
GameState.fleet_gas_cargo = 17
|
||||
var surface: Node = load("res://PlanetSurface.tscn").instantiate()
|
||||
var surface: Node = load("res://surface/PlanetSurface.tscn").instantiate()
|
||||
surface.get_node("SurfaceController").fade_duration = 0.0
|
||||
add_child(surface)
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ func _ready() -> void:
|
|||
GameState.VESSEL_SHIELD, GameState.VESSEL_SHIELD,
|
||||
GameState.VESSEL_GAS_BOMBER,
|
||||
]
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("BackgroundLayer").visible = false
|
||||
main.get_node("AsteroidField").visible = false
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ func _ready() -> void:
|
|||
GameState.vessel_levels["unlock_gas_bomber"] = 1
|
||||
GameState.deposit_fleet_resource(GameState.RESOURCE_ENERGY, 200)
|
||||
GameState.deposit_fleet_resource(GameState.RESOURCE_GAS, 200)
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("EnemySpawner").set_process(false)
|
||||
main.get_node("AsteroidField").set_process(false)
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ func _ready() -> void:
|
|||
GameState.add_building(GameState.BUILDING_TRANSPORT_HUB, Vector2(480.0, 0.0))
|
||||
GameState.add_building(GameState.BUILDING_SHIP_LAB, Vector2(820.0, 0.0))
|
||||
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("AsteroidField").set_process(false)
|
||||
main.get_node("EnemySpawner").set_process(false)
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ func _ready() -> void:
|
|||
GameState.bank_inventory.set_amount(GameState.RESOURCE_ORE, 310)
|
||||
GameState.fleet_inventory.set_amount(GameState.RESOURCE_ORE, 47)
|
||||
GameState.research_points = 4
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("EnemySpawner").set_process(false)
|
||||
main.get_node("AsteroidField").set_process(false)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ func _ready() -> void:
|
|||
GameState.extractors.clear()
|
||||
GameState.transporters.clear()
|
||||
GameState.vessel_levels["unlock_laser"] = 1
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("BackgroundLayer").visible = false
|
||||
main.get_node("AsteroidField").visible = false
|
||||
|
|
@ -43,7 +43,7 @@ func _ready() -> void:
|
|||
drag.position = press.position + Vector2(-245.0, -235.0)
|
||||
skill.handle_drag(drag)
|
||||
for t in [0.35, 0.6]:
|
||||
var enemy: Node = load("res://Enemy.tscn").instantiate()
|
||||
var enemy: Node = load("res://enemies/Enemy.tscn").instantiate()
|
||||
enemy.position = fleet.get_centroid().lerp(skill.aim_target, t)
|
||||
main.add_child(enemy)
|
||||
enemy.speed = 0.0 # after add_child - _ready() sets it from the definition
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ func _ready() -> void:
|
|||
GameState.add_extractor(data.name, WorldGen.chunk_origin(best) + data.local_pos)
|
||||
print("extractor on '%s' at chunk %s" % [data.name, best])
|
||||
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
# open_map(), not `visible = true` - opening also recentres the view on
|
||||
# the fleet, and without that the map is drawn from its own origin in the
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ var main: Node
|
|||
func _ready() -> void:
|
||||
GameState.buildings.clear()
|
||||
GameState.extractors.clear()
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("BackgroundLayer").visible = false
|
||||
main.get_node("AsteroidField").visible = false
|
||||
|
|
@ -26,12 +26,12 @@ func _ready() -> void:
|
|||
if is_instance_valid(ship):
|
||||
ship.set_physics_process(false)
|
||||
|
||||
var mothership: Node = load("res://Enemy.tscn").instantiate()
|
||||
var mothership: Node = load("res://enemies/Enemy.tscn").instantiate()
|
||||
mothership.enemy_id = "enemy_mothership"
|
||||
mothership.position = Vector2(-500, -300)
|
||||
main.add_child(mothership)
|
||||
|
||||
var beam: Node2D = load("res://EnemyBigLaserBeam.tscn").instantiate()
|
||||
var beam: Node2D = load("res://enemies/EnemyBigLaserBeam.tscn").instantiate()
|
||||
beam.charge_time = 10.0 # frozen mid-countdown for the screenshot
|
||||
beam.beam_range = 1400.0
|
||||
beam.beam_half_width = 35.0
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ func _ready() -> void:
|
|||
|
||||
|
||||
func _spawn(planet_name: String, at: Vector2, shape_seed: int) -> void:
|
||||
var planet: Node2D = load("res://Planet.tscn").instantiate()
|
||||
var planet: Node2D = load("res://planets/Planet.tscn").instantiate()
|
||||
planet.planet_name = planet_name
|
||||
planet.shape_seed = shape_seed
|
||||
planet.position = at
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ func _initialize() -> void:
|
|||
print("engine boot to _initialize: %d ms" % boot)
|
||||
|
||||
t0 = Time.get_ticks_msec()
|
||||
var packed: PackedScene = load("res://Main.tscn")
|
||||
var packed: PackedScene = load("res://world/Main.tscn")
|
||||
print("load(Main.tscn): %d ms" % (Time.get_ticks_msec() - t0))
|
||||
|
||||
t0 = Time.get_ticks_msec()
|
||||
|
|
|
|||
|
|
@ -9,6 +9,6 @@ func _ready() -> void:
|
|||
GameState.planet_definition_id = "research_lab"
|
||||
GameState.surviving_ship_count = 3
|
||||
GameState.rocks = 128
|
||||
var surface: Node = load("res://PlanetSurface.tscn").instantiate()
|
||||
var surface: Node = load("res://surface/PlanetSurface.tscn").instantiate()
|
||||
surface.get_node("SurfaceController").fade_duration = 0.0
|
||||
add_child(surface)
|
||||
|
|
|
|||
|
|
@ -14,4 +14,4 @@ func _ready() -> void:
|
|||
GameState.gas = 46
|
||||
GameState.fleet_cargo = 34
|
||||
GameState.fleet_gas_cargo = 17
|
||||
add_child(load("res://PlanetSurface.tscn").instantiate())
|
||||
add_child(load("res://surface/PlanetSurface.tscn").instantiate())
|
||||
|
|
|
|||
|
|
@ -15,6 +15,6 @@ func _ready() -> void:
|
|||
GameState.gas = 46
|
||||
GameState.fleet_cargo = 34
|
||||
GameState.fleet_gas_cargo = 17
|
||||
var surface: Node = load("res://PlanetSurface.tscn").instantiate()
|
||||
var surface: Node = load("res://surface/PlanetSurface.tscn").instantiate()
|
||||
surface.get_node("SurfaceController").fade_duration = 0.0
|
||||
add_child(surface)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ extends SceneTree
|
|||
# surface profile from planet_definition_id - so without this the tool can
|
||||
# only ever photograph the default planet:
|
||||
#
|
||||
# ... -- res://PlanetSurface.tscn out.png 90 planet_definition_id=gas_giant
|
||||
# ... -- res://surface/PlanetSurface.tscn out.png 90 planet_definition_id=gas_giant
|
||||
|
||||
var wait_frames: int = 60
|
||||
var frames: int = 0
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@ extends Node2D
|
|||
|
||||
|
||||
func _ready() -> void:
|
||||
var editor: Node = load("res://PlanetSetupEditor.tscn").instantiate()
|
||||
var editor: Node = load("res://surface/PlanetSetupEditor.tscn").instantiate()
|
||||
add_child(editor)
|
||||
editor._on_load_pressed()
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ extends Node2D
|
|||
|
||||
|
||||
func _ready() -> void:
|
||||
var editor: Node = load("res://PlanetSetupEditor.tscn").instantiate()
|
||||
var editor: Node = load("res://surface/PlanetSetupEditor.tscn").instantiate()
|
||||
add_child(editor)
|
||||
editor.new_setup("preview_setup", "Preview Setup", "rocky")
|
||||
editor.add_capture_point(Vector2(300, 150))
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@ func _ready() -> void:
|
|||
GameState.planet_definition_id = "rocky"
|
||||
GameState.surviving_ship_count = 3
|
||||
GameState.rocks = 128
|
||||
var surface: Node = load("res://PlanetSurface.tscn").instantiate()
|
||||
var surface: Node = load("res://surface/PlanetSurface.tscn").instantiate()
|
||||
surface.get_node("SurfaceController").fade_duration = 0.0
|
||||
add_child(surface)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ func _ready() -> void:
|
|||
GameState.bank_inventory.set_amount(GameState.RESOURCE_GAS, 85)
|
||||
GameState.fleet_inventory.set_amount(GameState.RESOURCE_ORE, 17)
|
||||
GameState.research_points = 6
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("EnemySpawner").set_process(false)
|
||||
main.get_node("AsteroidField").set_process(false)
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ func _ready() -> void:
|
|||
GameState.buildings.clear()
|
||||
GameState.extractors.clear()
|
||||
GameState.transporters.clear()
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("BackgroundLayer").visible = false
|
||||
main.get_node("AsteroidField").visible = false
|
||||
|
|
@ -58,13 +58,13 @@ func _process(_delta: float) -> void:
|
|||
for projectile in get_tree().get_nodes_in_group("player_projectiles"):
|
||||
projectile.queue_free()
|
||||
|
||||
var chaser: Node = load("res://Enemy.tscn").instantiate()
|
||||
var chaser: Node = load("res://enemies/Enemy.tscn").instantiate()
|
||||
chaser.enemy_id = "chaser"
|
||||
chaser.position = Vector2(-160, -80)
|
||||
main.add_child(chaser)
|
||||
chaser.speed = 0.0
|
||||
|
||||
var sniper: Node = load("res://Enemy.tscn").instantiate()
|
||||
var sniper: Node = load("res://enemies/Enemy.tscn").instantiate()
|
||||
sniper.enemy_id = "sniper"
|
||||
sniper.position = Vector2(160, -80)
|
||||
main.add_child(sniper)
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ func _ready() -> void:
|
|||
GameState.fleet_cargo = 24
|
||||
GameState.fleet_gas_cargo = 12
|
||||
GameState.unlocked = ["shipyards", "logistics", "freight"]
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("BuildingField").place(GameState.BUILDING_SHIP_CRAFTER, Vector2(400.0, 0.0))
|
||||
var crafter_id: int = int(GameState.buildings[-1].id)
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ func _ready() -> void:
|
|||
returning.from = Vector2(-380.0, 150.0)
|
||||
returning.to = Vector2(420.0, 150.0)
|
||||
|
||||
var main: Node = load("res://Main.tscn").instantiate()
|
||||
var main: Node = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("AsteroidField").set_process(false)
|
||||
main.get_node("EnemySpawner").set_process(false)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ func _ready() -> void:
|
|||
GameState.buildings.clear()
|
||||
GameState.extractors.clear()
|
||||
GameState.transporters.clear()
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
add_child(main)
|
||||
main.get_node("BackgroundLayer").visible = false
|
||||
main.get_node("AsteroidField").visible = false
|
||||
|
|
@ -43,13 +43,13 @@ func _process(_delta: float) -> void:
|
|||
for projectile in get_tree().get_nodes_in_group("player_projectiles"):
|
||||
projectile.queue_free()
|
||||
|
||||
var chaser: Node = load("res://Enemy.tscn").instantiate()
|
||||
var chaser: Node = load("res://enemies/Enemy.tscn").instantiate()
|
||||
chaser.enemy_id = "chaser"
|
||||
chaser.position = Vector2(-160, -80)
|
||||
main.add_child(chaser)
|
||||
chaser.speed = 0.0
|
||||
|
||||
var turret: Node = load("res://Enemy.tscn").instantiate()
|
||||
var turret: Node = load("res://enemies/Enemy.tscn").instantiate()
|
||||
turret.enemy_id = "turret_spawner"
|
||||
turret.position = Vector2(160, -80)
|
||||
main.add_child(turret)
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ extends Node2D
|
|||
# bash tests/screenshot.sh res://tests/_vfx_preview.tscn out.png 20
|
||||
|
||||
const VFX_SCRIPTS: Array = [
|
||||
"res://ShipExplosionVFX.gd", "res://EnemyExplosionVFX.gd",
|
||||
"res://AsteroidExplosionVFX.gd", "res://LightBurstVFX.gd",
|
||||
"res://vfx/ShipExplosionVFX.gd", "res://vfx/EnemyExplosionVFX.gd",
|
||||
"res://vfx/AsteroidExplosionVFX.gd", "res://vfx/LightBurstVFX.gd",
|
||||
]
|
||||
|
||||
|
||||
|
|
@ -18,7 +18,7 @@ func _ready() -> void:
|
|||
RenderingServer.set_default_clear_color(Color(0.02, 0.03, 0.06))
|
||||
|
||||
# Bolts at several headings, held still so they can be inspected.
|
||||
var bolt_scene: PackedScene = load("res://Projectile.tscn")
|
||||
var bolt_scene: PackedScene = load("res://vessels/Projectile.tscn")
|
||||
for i in range(6):
|
||||
var bolt: Area2D = bolt_scene.instantiate()
|
||||
bolt.position = Vector2(-460.0 + float(i) * 90.0, -220.0)
|
||||
|
|
|
|||
|
|
@ -10,6 +10,6 @@ func _ready() -> void:
|
|||
GameState.planet_name = "Event Zero"
|
||||
GameState.planet_definition_id = "black_hole"
|
||||
GameState.surviving_ship_count = 3
|
||||
var surface: Node = load("res://PlanetSurface.tscn").instantiate()
|
||||
var surface: Node = load("res://surface/PlanetSurface.tscn").instantiate()
|
||||
surface.get_node("SurfaceController").fade_duration = 0.0
|
||||
add_child(surface)
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
# a phone's frame budget is not.
|
||||
#
|
||||
# Usage: bash tests/profile_shader.sh <shader_res_path> [timed_frames] [warmup] [WxH]
|
||||
# Example: bash tests/profile_shader.sh res://lunar_surface.gdshader 30 10 720x1280
|
||||
# Example: bash tests/profile_shader.sh res://shaders/lunar_surface.gdshader 30 10 720x1280
|
||||
|
||||
set -e
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
#
|
||||
# 1. It runs from a COPY on Termux's own filesystem, not from the project
|
||||
# directory. The project lives under ~/storage/shared, which is Android's
|
||||
# FUSE bridge; read through proot on top of that, `load("res://Main.tscn")`
|
||||
# FUSE bridge; read through proot on top of that, `load("res://world/Main.tscn")`
|
||||
# alone took 8.5s per test, against ~2s from a native path. Nearly every
|
||||
# test loads Main.tscn, and none of that time is gameplay. The copy is
|
||||
# ~1.4s for the whole suite and its .godot import cache is kept between
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@
|
|||
# but doesn't hit this crash. Good enough for one-shot screenshots.
|
||||
#
|
||||
# Usage: bash tests/screenshot.sh <scene_res_path> <output_png_path> [wait_frames] [WxH] [key=value ...]
|
||||
# Example: bash tests/screenshot.sh res://Main.tscn /tmp/out.png 60 720x1280
|
||||
# bash tests/screenshot.sh res://PlanetSurface.tscn /tmp/gas.png 90 720x1280 planet_definition_id=gas_giant
|
||||
# Example: bash tests/screenshot.sh res://world/Main.tscn /tmp/out.png 60 720x1280
|
||||
# bash tests/screenshot.sh res://surface/PlanetSurface.tscn /tmp/gas.png 90 720x1280 planet_definition_id=gas_giant
|
||||
#
|
||||
# Trailing key=value pairs are set on the GameState autoload before the
|
||||
# scene loads - see tests/_screenshot_tool.gd.
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ func _initialize() -> void:
|
|||
game_state = root.get_node("GameState")
|
||||
game_state.buildings.clear()
|
||||
game_state.extractors.clear()
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
field = scene.get_node("BuildingField")
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ var elapsed: float = 0.0
|
|||
|
||||
|
||||
func _initialize() -> void:
|
||||
ARTILLERY_SHELL_SCRIPT = load("res://ArtilleryShell.gd")
|
||||
ARTILLERY_SHELL_SCRIPT = load("res://enemies/ArtilleryShell.gd")
|
||||
game_state = root.get_node("GameState")
|
||||
game_state.buildings.clear()
|
||||
game_state.extractors.clear()
|
||||
|
|
@ -52,7 +52,7 @@ func _initialize() -> void:
|
|||
game_state.build_time_scale = 0.02
|
||||
game_state.reset_progression()
|
||||
game_state.rocks = 2000
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
fleet = main.get_node("Fleet")
|
||||
|
||||
|
|
@ -83,7 +83,7 @@ func _process(delta: float) -> bool:
|
|||
|
||||
origin = impact_point + Vector2(400, 400)
|
||||
travel_time = origin.distance_to(impact_point) / 300.0
|
||||
shell = load("res://ArtilleryShell.tscn").instantiate()
|
||||
shell = load("res://enemies/ArtilleryShell.tscn").instantiate()
|
||||
shell.shell_speed = 300.0
|
||||
shell.aoe_radius = 220.0
|
||||
shell.damage = 3
|
||||
|
|
@ -145,7 +145,7 @@ func _process(delta: float) -> bool:
|
|||
# moves after the shot is fired ---------------------------------
|
||||
fleet.spawn_ships(1, Vector2(9000, 0))
|
||||
far_ship = fleet.ships[0]
|
||||
artillery = load("res://Enemy.tscn").instantiate()
|
||||
artillery = load("res://enemies/Enemy.tscn").instantiate()
|
||||
artillery.enemy_id = "artillery"
|
||||
artillery.position = far_ship.position + Vector2(300, 0)
|
||||
main.add_child(artillery)
|
||||
|
|
|
|||
|
|
@ -32,14 +32,14 @@ func _initialize() -> void:
|
|||
game_state.buildings.clear()
|
||||
game_state.extractors.clear()
|
||||
game_state.reset_progression()
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
current_scene = main
|
||||
fleet = main.get_node("Fleet")
|
||||
|
||||
|
||||
func _spawn_asteroid(at: Vector2) -> Node2D:
|
||||
var rock: Node2D = load("res://Asteroid.tscn").instantiate()
|
||||
var rock: Node2D = load("res://world/Asteroid.tscn").instantiate()
|
||||
rock.position = at
|
||||
main.add_child(rock)
|
||||
return rock
|
||||
|
|
@ -128,13 +128,13 @@ func _process(delta: float) -> bool:
|
|||
|
||||
# --- E. abandoned ore expires, authored ore does not ----------
|
||||
_clear_sky()
|
||||
var abandoned: Node2D = load("res://Rock.tscn").instantiate()
|
||||
var abandoned: Node2D = load("res://surface/Rock.tscn").instantiate()
|
||||
abandoned.build_shape(1)
|
||||
abandoned.lifetime = 0.4
|
||||
# Far from every ship, or it would be collected rather than expire.
|
||||
abandoned.position = fleet.get_centroid() + Vector2(9000.0, 0.0)
|
||||
main.add_child(abandoned)
|
||||
var authored: Node2D = load("res://Rock.tscn").instantiate()
|
||||
var authored: Node2D = load("res://surface/Rock.tscn").instantiate()
|
||||
authored.build_shape(2)
|
||||
authored.position = fleet.get_centroid() + Vector2(9600.0, 0.0)
|
||||
main.add_child(authored)
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ var ships_at_start: int = 0
|
|||
|
||||
func _initialize() -> void:
|
||||
root.get_node("GameState").reset_formation()
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
fleet = scene.get_node("Fleet")
|
||||
field = scene.get_node("AsteroidField")
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ var stage: int = 0
|
|||
|
||||
|
||||
func _initialize() -> void:
|
||||
var packed: PackedScene = load("res://Main.tscn")
|
||||
var packed: PackedScene = load("res://world/Main.tscn")
|
||||
main_scene = packed.instantiate()
|
||||
root.add_child(main_scene)
|
||||
fleet = main_scene.get_node("Fleet")
|
||||
|
|
@ -31,7 +31,7 @@ func _process(delta: float) -> bool:
|
|||
# Wait one tick so Fleet._ready() has run and fleet.ships is
|
||||
# populated before we grab a ship reference.
|
||||
target_ship = fleet.ships[0]
|
||||
var asteroid_scene: PackedScene = load("res://Asteroid.tscn")
|
||||
var asteroid_scene: PackedScene = load("res://world/Asteroid.tscn")
|
||||
asteroid = asteroid_scene.instantiate()
|
||||
asteroid.position = target_ship.position
|
||||
asteroid.velocity = Vector2.ZERO
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ func _initialize() -> void:
|
|||
quit(1)
|
||||
return
|
||||
|
||||
var packed: PackedScene = load("res://Main.tscn")
|
||||
var packed: PackedScene = load("res://world/Main.tscn")
|
||||
main_scene = packed.instantiate()
|
||||
root.add_child(main_scene)
|
||||
fleet = main_scene.get_node("Fleet")
|
||||
|
|
|
|||
|
|
@ -82,14 +82,14 @@ func _initialize() -> void:
|
|||
print("dark matter is generic: in resource_types(), own definition, own colour %s" % dm_color)
|
||||
|
||||
# --- structural: the black hole definition itself -----------------------
|
||||
var black_hole_def: Resource = load("res://PlanetDefinitions.gd").get_definition("black_hole")
|
||||
var black_hole_def: Resource = load("res://planets/PlanetDefinitions.gd").get_definition("black_hole")
|
||||
if black_hole_def.resource_id != "dark_matter":
|
||||
_fail("black_hole planet's resource_id is '%s', expected 'dark_matter'" % black_hole_def.resource_id)
|
||||
return
|
||||
if black_hole_def.surface_profile_id != "void":
|
||||
_fail("black_hole planet's surface_profile_id is '%s', expected 'void'" % black_hole_def.surface_profile_id)
|
||||
return
|
||||
var void_profile: Resource = load("res://PlanetSurfaceProfiles.gd").get_profile("void")
|
||||
var void_profile: Resource = load("res://surface/PlanetSurfaceProfiles.gd").get_profile("void")
|
||||
if void_profile.features_scene != null:
|
||||
_fail("void surface profile has a features_scene - dark matter must never be a surface pickup")
|
||||
return
|
||||
|
|
@ -101,7 +101,7 @@ func _initialize() -> void:
|
|||
game_state.planet_id = "test_black_hole"
|
||||
game_state.planet_name = "Event Zero"
|
||||
game_state.planet_definition_id = "black_hole"
|
||||
scene = load("res://PlanetSurface.tscn").instantiate()
|
||||
scene = load("res://surface/PlanetSurface.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
current_scene = scene
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ func _initialize() -> void:
|
|||
for node in GameState.SKILL_TREE:
|
||||
game_state.unlocked.append(node.id)
|
||||
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
controller = scene.get_node("BuildController")
|
||||
popup = scene.get_node("UI/BuildMenu/InfoPopup")
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ func _initialize() -> void:
|
|||
game_state.transporters.clear()
|
||||
game_state.reset_progression()
|
||||
game_state.rocks = 500
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
controller = scene.get_node("BuildController")
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ const EXPECTED: Dictionary = {
|
|||
|
||||
|
||||
func _initialize() -> void:
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
extends SceneTree
|
||||
|
||||
const BUILDING_DEFINITIONS = preload("res://BuildingDefinitions.gd")
|
||||
const BUILDING_DEFINITIONS = preload("res://buildings/BuildingDefinitions.gd")
|
||||
|
||||
|
||||
func _initialize() -> void:
|
||||
var scene: PackedScene = load("res://Building.tscn")
|
||||
var scene: PackedScene = load("res://buildings/Building.tscn")
|
||||
for definition in BUILDING_DEFINITIONS.all():
|
||||
if definition.placement_mode != "space":
|
||||
continue
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ func _initialize() -> void:
|
|||
var game_state: Node = root.get_node("GameState")
|
||||
game_state.buildings.clear()
|
||||
game_state.extractors.clear()
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
field = scene.get_node("BuildingField")
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ func _initialize() -> void:
|
|||
# wall clock. See GameState.build_time_scale.
|
||||
game_state.build_time_scale = 0.02
|
||||
game_state.unlocked = ["shipyards", "coordination", "wing", "squadron", "armada"]
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
fleet = scene.get_node("Fleet")
|
||||
field = scene.get_node("BuildingField")
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ var identical_frames: int = 0
|
|||
|
||||
|
||||
func _initialize() -> void:
|
||||
var packed: PackedScene = load("res://Main.tscn")
|
||||
var packed: PackedScene = load("res://world/Main.tscn")
|
||||
main_scene = packed.instantiate()
|
||||
root.add_child(main_scene)
|
||||
fleet = main_scene.get_node("Fleet")
|
||||
|
|
|
|||
|
|
@ -38,8 +38,8 @@ var progress_before_drain: float = 0.0
|
|||
|
||||
|
||||
func _initialize() -> void:
|
||||
CAPTURE_POINT_SCRIPT = load("res://CapturePoint.gd")
|
||||
PLANET_SETUP_SCRIPT = load("res://PlanetSetup.gd")
|
||||
CAPTURE_POINT_SCRIPT = load("res://surface/CapturePoint.gd")
|
||||
PLANET_SETUP_SCRIPT = load("res://surface/PlanetSetup.gd")
|
||||
game_state = root.get_node("GameState")
|
||||
game_state.planet_capture.clear()
|
||||
|
||||
|
|
@ -51,11 +51,11 @@ func _initialize() -> void:
|
|||
fake_setup.capture_points = PackedVector2Array([Vector2(0, 0), Vector2(500, 0)])
|
||||
|
||||
game_state.planet_id = restore_planet_id
|
||||
var host1: Node = load("res://PlanetSetupHost.tscn").instantiate()
|
||||
var host1: Node = load("res://surface/PlanetSetupHost.tscn").instantiate()
|
||||
host1.apply_setup(fake_setup)
|
||||
game_state.mark_point_captured(restore_planet_id, 0) # simulates a completed prior visit
|
||||
|
||||
var host2: Node = load("res://PlanetSetupHost.tscn").instantiate()
|
||||
var host2: Node = load("res://surface/PlanetSetupHost.tscn").instantiate()
|
||||
host2.apply_setup(fake_setup)
|
||||
var restored: Node = null
|
||||
var fresh: Node = null
|
||||
|
|
@ -77,7 +77,7 @@ func _initialize() -> void:
|
|||
game_state.extractors.clear()
|
||||
game_state.rocks = 200
|
||||
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
fleet = main.get_node("Fleet")
|
||||
|
||||
|
|
@ -93,7 +93,7 @@ func _process(delta: float) -> bool:
|
|||
for a in get_nodes_in_group("asteroids"):
|
||||
a.queue_free()
|
||||
|
||||
point = load("res://CapturePoint.tscn").instantiate()
|
||||
point = load("res://surface/CapturePoint.tscn").instantiate()
|
||||
point.point_index = 0
|
||||
point.capture_time = 1.0
|
||||
point.capture_radius = 200.0
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ func _initialize() -> void:
|
|||
# primitives work off GameState, not off the spawned node - so this stays
|
||||
# a display test rather than becoming one about the building system.
|
||||
mothership_id = game_state.add_building(GameState.BUILDING_MOTHERSHIP, Vector2.ZERO)
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ func _initialize() -> void:
|
|||
game_state.build_time_scale = 0.02
|
||||
game_state.rocks = 500
|
||||
game_state.research_points = 1
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
fleet = scene.get_node("Fleet")
|
||||
controller = scene.get_node("BuildController")
|
||||
|
|
@ -205,7 +205,7 @@ func _process(delta: float) -> bool:
|
|||
# same frame - a false positive, not the carrier firing.
|
||||
if elapsed < 0.3:
|
||||
return false
|
||||
var enemy_scene: PackedScene = load("res://Enemy.tscn")
|
||||
var enemy_scene: PackedScene = load("res://enemies/Enemy.tscn")
|
||||
enemy = enemy_scene.instantiate()
|
||||
enemy.position = fleet.get_centroid() + Vector2(220.0, 0.0)
|
||||
scene.add_child(enemy)
|
||||
|
|
|
|||
|
|
@ -32,14 +32,14 @@ func _initialize() -> void:
|
|||
game_state.extractors.clear()
|
||||
game_state.reset_progression()
|
||||
game_state.vessel_levels["unlock_shield"] = 1
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
current_scene = main
|
||||
fleet = main.get_node("Fleet")
|
||||
|
||||
|
||||
func _spawn_enemy(enemy_id: String, at: Vector2) -> Node2D:
|
||||
var enemy: Node2D = load("res://Enemy.tscn").instantiate()
|
||||
var enemy: Node2D = load("res://enemies/Enemy.tscn").instantiate()
|
||||
enemy.enemy_id = enemy_id
|
||||
enemy.position = at
|
||||
main.add_child(enemy)
|
||||
|
|
@ -60,7 +60,7 @@ func _process(delta: float) -> bool:
|
|||
hazard.queue_free()
|
||||
fleet.spawn_ships(1, Vector2.ZERO, PackedStringArray([GameState.VESSEL_INTERCEPTOR]))
|
||||
|
||||
var definitions: Script = load("res://EnemyDefinitions.gd")
|
||||
var definitions: Script = load("res://enemies/EnemyDefinitions.gd")
|
||||
if not bool(definitions.get_definition("chaser").dies_on_contact):
|
||||
return _fail("the chaser is not marked dies_on_contact")
|
||||
if bool(definitions.get_definition("sniper").dies_on_contact):
|
||||
|
|
|
|||
1
tests/test_chaser_rams.gd.uid
Normal file
1
tests/test_chaser_rams.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://bjqhkqmw1ls04
|
||||
|
|
@ -27,7 +27,7 @@ var elapsed: float = 0.0
|
|||
func _initialize() -> void:
|
||||
game_state = root.get_node("GameState")
|
||||
game_state.planet_capture.clear()
|
||||
host_scene = load("res://PlanetSetupHost.tscn")
|
||||
host_scene = load("res://surface/PlanetSetupHost.tscn")
|
||||
|
||||
|
||||
func _process(delta: float) -> bool:
|
||||
|
|
@ -85,14 +85,14 @@ func _process(delta: float) -> bool:
|
|||
|
||||
|
||||
func _make_setup(capture_count: int, enemy_count: int) -> Resource:
|
||||
var setup: Resource = load("res://PlanetSetup.gd").new()
|
||||
var setup: Resource = load("res://surface/PlanetSetup.gd").new()
|
||||
setup.setup_id = "in_memory"
|
||||
setup.surface_profile_id = "rocky"
|
||||
var points: PackedVector2Array = PackedVector2Array()
|
||||
for i in range(capture_count):
|
||||
points.append(Vector2(200.0 * float(i + 1), 0.0))
|
||||
setup.capture_points = points
|
||||
var spawn_script: Script = load("res://PlanetSetupSpawn.gd")
|
||||
var spawn_script: Script = load("res://surface/PlanetSetupSpawn.gd")
|
||||
for i in range(enemy_count):
|
||||
var spawn: Resource = spawn_script.new()
|
||||
spawn.enemy_id = "chaser"
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ func _initialize() -> void:
|
|||
game_state.buildings.clear()
|
||||
game_state.extractors.clear()
|
||||
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
field = scene.get_node("BuildingField")
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ func _initialize() -> void:
|
|||
game_state.fleet_cargo = 0
|
||||
game_state.stored_vessels.clear()
|
||||
game_state.build_time_scale = 0.02
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
controller = scene.get_node("BuildController")
|
||||
fleet = scene.get_node("Fleet")
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ func _initialize() -> void:
|
|||
game_state.buildings.clear()
|
||||
game_state.extractors.clear()
|
||||
game_state.reset_progression()
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
current_scene = main
|
||||
fleet = main.get_node("Fleet")
|
||||
|
|
|
|||
1
tests/test_desktop_combat.gd.uid
Normal file
1
tests/test_desktop_combat.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://bgbmbg1bd8r4v
|
||||
|
|
@ -116,7 +116,7 @@ func _process(delta: float) -> bool:
|
|||
return _fail("starting a normal game after a dev one kept the dev stock")
|
||||
print("starting a normal game afterwards clears dev mode entirely")
|
||||
|
||||
menu = load("res://MainMenu.tscn").instantiate()
|
||||
menu = load("res://ui/MainMenu.tscn").instantiate()
|
||||
root.add_child(menu)
|
||||
current_scene = menu
|
||||
elapsed = 0.0
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ func _process(delta: float) -> bool:
|
|||
# --- C continued: the SpeedFader visibly follows it down ----------
|
||||
if elapsed < 0.2:
|
||||
return false
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
fleet = main.get_node("Fleet")
|
||||
fader = main.get_node("UI/SpeedFader")
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ func _initialize() -> void:
|
|||
game_state.reset_progression()
|
||||
game_state.vessel_levels["unlock_distorder"] = 1
|
||||
game_state.deposit_fleet_resource(GameState.RESOURCE_ENERGY, 500)
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
fleet = main.get_node("Fleet")
|
||||
fader = main.get_node("UI/SpeedFader")
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ var started: bool = false
|
|||
|
||||
|
||||
func _initialize() -> void:
|
||||
var packed: PackedScene = load("res://Main.tscn")
|
||||
var packed: PackedScene = load("res://world/Main.tscn")
|
||||
main_scene = packed.instantiate()
|
||||
root.add_child(main_scene)
|
||||
fleet = main_scene.get_node("Fleet")
|
||||
|
|
@ -45,7 +45,7 @@ func _physics_process(delta: float) -> bool:
|
|||
root.get_node("GameState").unlocked.append_array(["wing", "squadron", "armada"])
|
||||
fleet.spawn_ships(5, Vector2.ZERO)
|
||||
target_ship = fleet.ships[0]
|
||||
var enemy_scene: PackedScene = load("res://Enemy.tscn")
|
||||
var enemy_scene: PackedScene = load("res://enemies/Enemy.tscn")
|
||||
enemy = enemy_scene.instantiate()
|
||||
enemy.position = target_ship.position
|
||||
main_scene.add_child(enemy)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ var started: bool = false
|
|||
|
||||
|
||||
func _initialize() -> void:
|
||||
var packed: PackedScene = load("res://Main.tscn")
|
||||
var packed: PackedScene = load("res://world/Main.tscn")
|
||||
main_scene = packed.instantiate()
|
||||
root.add_child(main_scene)
|
||||
fleet = main_scene.get_node("Fleet")
|
||||
|
|
@ -45,7 +45,7 @@ func _physics_process(delta: float) -> bool:
|
|||
# a full one.
|
||||
root.get_node("GameState").unlocked.append_array(["wing", "squadron", "armada"])
|
||||
fleet.spawn_ships(5, Vector2.ZERO)
|
||||
var enemy_scene: PackedScene = load("res://Enemy.tscn")
|
||||
var enemy_scene: PackedScene = load("res://enemies/Enemy.tscn")
|
||||
enemy = enemy_scene.instantiate()
|
||||
enemy.position = fleet.get_centroid() + SPAWN_OFFSET
|
||||
main_scene.add_child(enemy)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ func _initialize() -> void:
|
|||
if chaser_def.enemy_id != "chaser" or chaser_def.max_hp != 3:
|
||||
return _fail("EnemyDefinitions did not resolve the chaser definition")
|
||||
|
||||
main_scene = load("res://Main.tscn").instantiate()
|
||||
main_scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main_scene)
|
||||
fleet = main_scene.get_node("Fleet")
|
||||
main_scene.get_node("EnemySpawner").set_process(false)
|
||||
|
|
@ -38,7 +38,7 @@ func _initialize() -> void:
|
|||
inner.name = "Inner"
|
||||
nested_host.add_child(inner)
|
||||
|
||||
enemy = load("res://Enemy.tscn").instantiate()
|
||||
enemy = load("res://enemies/Enemy.tscn").instantiate()
|
||||
enemy.position = fleet.get_centroid() + Vector2(600, 0)
|
||||
inner.add_child(enemy)
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ func _initialize() -> void:
|
|||
game_state.extractors.clear()
|
||||
game_state.transporters.clear()
|
||||
game_state.reset_progression()
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
fleet = main.get_node("Fleet")
|
||||
|
||||
|
|
@ -52,7 +52,7 @@ func _process(delta: float) -> bool:
|
|||
fleet.spawn_ships(1, Vector2.ZERO)
|
||||
|
||||
# --- A. beyond detection_range: no movement at all ---------------
|
||||
chaser = load("res://Enemy.tscn").instantiate()
|
||||
chaser = load("res://enemies/Enemy.tscn").instantiate()
|
||||
chaser.enemy_id = "chaser"
|
||||
var pursuit: Node = null
|
||||
main.add_child(chaser)
|
||||
|
|
@ -60,7 +60,7 @@ func _process(delta: float) -> bool:
|
|||
chaser.position = fleet.get_centroid() + Vector2(pursuit.detection_range + 300.0, 0.0)
|
||||
chaser_start = chaser.position
|
||||
|
||||
sniper = load("res://Enemy.tscn").instantiate()
|
||||
sniper = load("res://enemies/Enemy.tscn").instantiate()
|
||||
sniper.enemy_id = "sniper"
|
||||
main.add_child(sniper)
|
||||
var standoff: Node = sniper.get_component("standoff")
|
||||
|
|
@ -98,7 +98,7 @@ func _process(delta: float) -> bool:
|
|||
print("chaser correctly idle beyond range, closes in once inside it")
|
||||
|
||||
# --- D. the mothership closes in from far beyond a chaser's range -
|
||||
mothership = load("res://Enemy.tscn").instantiate()
|
||||
mothership = load("res://enemies/Enemy.tscn").instantiate()
|
||||
mothership.enemy_id = "enemy_mothership"
|
||||
main.add_child(mothership)
|
||||
var mother_pursuit: Node = mothership.get_component("pursuit")
|
||||
|
|
|
|||
|
|
@ -53,11 +53,11 @@ var elapsed: float = 0.0
|
|||
|
||||
func _initialize() -> void:
|
||||
game_state = root.get_node("GameState")
|
||||
beam_script = load("res://EnemyBigLaserBeam.gd")
|
||||
beam_script = load("res://enemies/EnemyBigLaserBeam.gd")
|
||||
# Four vessels are crewed below, past BASE_FLEET_SIZE's 3 slots, so the
|
||||
# capacity doctrines are granted rather than assumed.
|
||||
game_state.unlocked.append_array(["wing", "squadron", "armada"])
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
fleet = main.get_node("Fleet")
|
||||
|
||||
|
|
@ -92,7 +92,7 @@ func _process(delta: float) -> bool:
|
|||
if not shield_ship.has_shield():
|
||||
return _fail("shield ship has no shield right after being added")
|
||||
|
||||
var beam_scene: PackedScene = load("res://EnemyBigLaserBeam.tscn")
|
||||
var beam_scene: PackedScene = load("res://enemies/EnemyBigLaserBeam.tscn")
|
||||
beam = beam_scene.instantiate()
|
||||
beam.charge_time = 0.5
|
||||
beam.beam_range = 1000.0
|
||||
|
|
@ -153,7 +153,7 @@ func _process(delta: float) -> bool:
|
|||
fleet.ships.clear()
|
||||
fleet.spawn_ships(1, Vector2(3000, 0))
|
||||
|
||||
mothership = load("res://Enemy.tscn").instantiate()
|
||||
mothership = load("res://enemies/Enemy.tscn").instantiate()
|
||||
mothership.enemy_id = "enemy_mothership"
|
||||
mothership.position = Vector2.ZERO
|
||||
main.add_child(mothership)
|
||||
|
|
|
|||
|
|
@ -24,13 +24,13 @@ func _initialize() -> void:
|
|||
game_state.build_time_scale = 0.02
|
||||
game_state.reset_progression()
|
||||
game_state.rocks = 2000
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
fleet = scene.get_node("Fleet")
|
||||
|
||||
|
||||
func _fire_at(ship: Node) -> void:
|
||||
var projectile: Area2D = load("res://EnemyProjectile.tscn").instantiate()
|
||||
var projectile: Area2D = load("res://enemies/EnemyProjectile.tscn").instantiate()
|
||||
projectile.global_position = ship.global_position
|
||||
projectile.launch(Vector2.ZERO) # already on top of the target
|
||||
scene.add_child(projectile)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ var teleported: bool = false
|
|||
|
||||
|
||||
func _initialize() -> void:
|
||||
var packed: PackedScene = load("res://Main.tscn")
|
||||
var packed: PackedScene = load("res://world/Main.tscn")
|
||||
main_scene = packed.instantiate()
|
||||
root.add_child(main_scene)
|
||||
fleet = main_scene.get_node("Fleet")
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ func _initialize() -> void:
|
|||
for node in GameState.SKILL_TREE:
|
||||
game_state.unlocked.append(node.id)
|
||||
|
||||
main_scene = load("res://Main.tscn").instantiate()
|
||||
main_scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main_scene)
|
||||
fleet = main_scene.get_node("Fleet")
|
||||
controller = main_scene.get_node("BuildController")
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ func _initialize() -> void:
|
|||
state.transporters.clear()
|
||||
state.fleet_cargo = 0
|
||||
state.fleet_gas_cargo = 0
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
fleet = scene.get_node("Fleet")
|
||||
controller = scene.get_node("BuildController")
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ func _initialize() -> void:
|
|||
game_state.buildings.clear()
|
||||
game_state.extractors.clear()
|
||||
game_state.reset_progression()
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
current_scene = main
|
||||
fleet = main.get_node("Fleet")
|
||||
|
|
@ -92,7 +92,7 @@ func _process(delta: float) -> bool:
|
|||
return _fail("the default vessel has no weapon component to test")
|
||||
# Parked at a third of fire range, dead ahead: the old auto-aiming
|
||||
# gun would have opened up on this immediately.
|
||||
decoy = load("res://Enemy.tscn").instantiate()
|
||||
decoy = load("res://enemies/Enemy.tscn").instantiate()
|
||||
decoy.position = ship.global_position + Vector2(weapon.fire_range * 0.33, 0.0)
|
||||
main.add_child(decoy)
|
||||
decoy.speed = 0.0
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ var tuned: Dictionary = {}
|
|||
func _initialize() -> void:
|
||||
var game_state: Node = root.get_node("GameState")
|
||||
game_state.reset_progression()
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
current_scene = main
|
||||
fleet = main.get_node("Fleet")
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ func _initialize() -> void:
|
|||
game_state.extractors.clear()
|
||||
game_state.rocks = 100
|
||||
game_state.fleet_cargo = 0
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
fleet = scene.get_node("Fleet")
|
||||
field = scene.get_node("BuildingField")
|
||||
|
|
@ -67,7 +67,7 @@ func _process(delta: float) -> bool:
|
|||
# pool Rock.gd credits on pickup, and a test that calls the new
|
||||
# API by hand passes just as happily with Rock.gd left untouched.
|
||||
banked_before = game_state.rocks
|
||||
var rock: Area2D = load("res://Rock.tscn").instantiate()
|
||||
var rock: Area2D = load("res://surface/Rock.tscn").instantiate()
|
||||
rock.build_shape(1)
|
||||
rock.global_position = fleet.ships[0].global_position
|
||||
scene.add_child(rock)
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ func _initialize() -> void:
|
|||
game_state.rocks = 500
|
||||
game_state.fleet_cargo = 0
|
||||
mothership_id = game_state.add_building(GameState.BUILDING_MOTHERSHIP, Vector2.ZERO)
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
current_scene = scene
|
||||
|
||||
|
|
@ -61,7 +61,7 @@ func _process(delta: float) -> bool:
|
|||
# --- B. a full hold refuses a pickup, the rock stays ------------
|
||||
fleet.spawn_ships(1, Vector2.ZERO, PackedStringArray(["interceptor"]))
|
||||
game_state.fleet_cargo = 20
|
||||
rock = load("res://Rock.tscn").instantiate()
|
||||
rock = load("res://surface/Rock.tscn").instantiate()
|
||||
rock.build_shape(1)
|
||||
rock.global_position = fleet.ships[0].global_position
|
||||
scene.add_child(rock)
|
||||
|
|
@ -123,7 +123,7 @@ func _process(delta: float) -> bool:
|
|||
# test in this suite.
|
||||
if elapsed < 0.3:
|
||||
return false
|
||||
scene = load("res://PlanetSurface.tscn").instantiate()
|
||||
scene = load("res://surface/PlanetSurface.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
current_scene = scene
|
||||
elapsed = 0.0
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ var checkpoint_positions: Array = []
|
|||
|
||||
|
||||
func _initialize() -> void:
|
||||
var packed: PackedScene = load("res://Main.tscn")
|
||||
var packed: PackedScene = load("res://world/Main.tscn")
|
||||
main_scene = packed.instantiate()
|
||||
root.add_child(main_scene)
|
||||
fleet = main_scene.get_node("Fleet")
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ func _process(delta: float) -> bool:
|
|||
|
||||
# --- B. what actually flies ----------------------------------
|
||||
game_state.reset_new_game()
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
fleet = scene.get_node("Fleet")
|
||||
elapsed = 0.0
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ func _initialize() -> void:
|
|||
game_state.transporters.clear()
|
||||
game_state.stored_vessels.clear()
|
||||
game_state.reset_progression()
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
fleet = main.get_node("Fleet")
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ extends SceneTree
|
|||
# period whenever the camera crosses a wrap boundary. Unless the hashes
|
||||
# are wrapped to match, the whole sky rearranges itself at that instant
|
||||
|
||||
const SHADER_PATH := "res://gas_surface.gdshader"
|
||||
const SHADER_PATH := "res://shaders/gas_surface.gdshader"
|
||||
# Sample spacing along the scan, in cells. Small enough that a genuinely
|
||||
# smooth field moves very little between samples.
|
||||
const STEP := 0.001
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ func _initialize() -> void:
|
|||
return
|
||||
|
||||
game_state.fleet_gas_cargo = 20
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
fleet = main.get_node("Fleet")
|
||||
skill = main.get_node("GasBombController")
|
||||
|
|
@ -127,12 +127,12 @@ func _process(delta: float) -> bool:
|
|||
# enemy's definition, which would otherwise clobber a
|
||||
# pre-add_child override the instant the enemy entered the tree.
|
||||
for offset in [Vector2(-60, 0), Vector2(70, 35)]:
|
||||
var enemy: Node = load("res://Enemy.tscn").instantiate()
|
||||
var enemy: Node = load("res://enemies/Enemy.tscn").instantiate()
|
||||
enemy.position = skill.aim_target + offset
|
||||
main.add_child(enemy)
|
||||
enemy.speed = 0.0
|
||||
inside_enemies.append(enemy)
|
||||
outside_enemy = load("res://Enemy.tscn").instantiate()
|
||||
outside_enemy = load("res://enemies/Enemy.tscn").instantiate()
|
||||
outside_enemy.position = skill.aim_target + Vector2(AOE_RADIUS_FOR_TEST + 80.0, 0)
|
||||
main.add_child(outside_enemy)
|
||||
outside_enemy.speed = 0.0
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ func _initialize() -> void:
|
|||
game_state.rocks = 0
|
||||
game_state.gas = 0
|
||||
game_state.fleet_gas_cargo = 0
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
fleet = main.get_node("Fleet")
|
||||
skill = main.get_node("GasBombController")
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ func _initialize() -> void:
|
|||
state.vessel_levels["unlock_gas_bomber"] = 1
|
||||
# #60: shots draw from the fleet hold now - stock enough for both fires.
|
||||
state.fleet_gas_cargo = 20
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
fleet = main.get_node("Fleet")
|
||||
skill = main.get_node("GasBombController")
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ func _initialize() -> void:
|
|||
game_state.extractors.clear()
|
||||
game_state.transporters.clear()
|
||||
game_state.reset_progression()
|
||||
main = load("res://Main.tscn").instantiate()
|
||||
main = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(main)
|
||||
current_scene = main
|
||||
controller = main.get_node("BuildController")
|
||||
|
|
@ -65,7 +65,7 @@ func _process(delta: float) -> bool:
|
|||
return _fail("could not stock the burner with gas")
|
||||
|
||||
# --- A. it offers pause, as its primary action ----------------
|
||||
var definition: Resource = load("res://BuildingDefinitions.gd") \
|
||||
var definition: Resource = load("res://buildings/BuildingDefinitions.gd") \
|
||||
.get_definition(GameState.BUILDING_GAS_BURNER)
|
||||
var visual: Node = definition.visual_scene.instantiate()
|
||||
var provider: Node = visual.get_node_or_null("ActionProvider")
|
||||
|
|
|
|||
|
|
@ -42,10 +42,10 @@ func _process(delta: float) -> bool:
|
|||
# emission advances continuously so the source visibly looks active.
|
||||
game_state.planet_name = "Gas Test"
|
||||
game_state.planet_definition_id = "gas_giant"
|
||||
var surface: Node = load("res://PlanetSurface.tscn").instantiate()
|
||||
var surface: Node = load("res://surface/PlanetSurface.tscn").instantiate()
|
||||
root.add_child(surface)
|
||||
var gas_field: Node = surface.get_node("SurfaceFeatures/ResourceProvider")
|
||||
if gas_field.get_script() != load("res://GasVentField.gd"):
|
||||
if gas_field.get_script() != load("res://surface/GasVentField.gd"):
|
||||
surface.free()
|
||||
return _fail("gas surface did not compose the gas feature scene")
|
||||
if surface.get_node_or_null("RockField") != null:
|
||||
|
|
@ -58,10 +58,10 @@ func _process(delta: float) -> bool:
|
|||
surface.free()
|
||||
|
||||
game_state.planet_definition_id = "rocky"
|
||||
var rocky_surface: Node = load("res://PlanetSurface.tscn").instantiate()
|
||||
var rocky_surface: Node = load("res://surface/PlanetSurface.tscn").instantiate()
|
||||
root.add_child(rocky_surface)
|
||||
var rocky_features: Node = rocky_surface.get_node("SurfaceFeatures/ResourceProvider")
|
||||
if rocky_features.get_script() != load("res://RockField.gd"):
|
||||
if rocky_features.get_script() != load("res://surface/RockField.gd"):
|
||||
rocky_surface.free()
|
||||
return _fail("rocky surface did not compose the ore feature scene")
|
||||
if rocky_surface.get_node_or_null("GasVentField") != null:
|
||||
|
|
@ -80,7 +80,7 @@ func _process(delta: float) -> bool:
|
|||
break
|
||||
if not found_giant:
|
||||
return _fail("world generation produced no deterministic gas giant")
|
||||
var giant: Node2D = load("res://Planet.tscn").instantiate()
|
||||
var giant: Node2D = load("res://planets/Planet.tscn").instantiate()
|
||||
giant.definition_id = "gas_giant"
|
||||
root.add_child(giant)
|
||||
giant.visual._process(0.5)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
extends SceneTree
|
||||
|
||||
const INVENTORY = preload("res://Inventory.gd")
|
||||
const INVENTORY = preload("res://resources/Inventory.gd")
|
||||
const TEST_RESOURCE: String = "crystal"
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ func _initialize() -> void:
|
|||
game_state.transporters.clear()
|
||||
game_state.stored_vessels.clear()
|
||||
game_state.rocks = 100
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
fleet = scene.get_node("Fleet")
|
||||
controller = scene.get_node("BuildController")
|
||||
|
|
@ -71,7 +71,7 @@ func _process(delta: float) -> bool:
|
|||
# Context actions are compact until expanded. A mothership unfolds
|
||||
# research and hangar; transfer stays as a persistent shortcut beside
|
||||
# Build and is not duplicated in the foldout.
|
||||
var mothership: Node2D = load("res://Building.tscn").instantiate()
|
||||
var mothership: Node2D = load("res://buildings/Building.tscn").instantiate()
|
||||
mothership.set("building_type", GameState.BUILDING_MOTHERSHIP)
|
||||
mothership._ready()
|
||||
controller.current_building = mothership
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ const EXCLUSIVE_PAIRS: Array = [["building_action_button", "hangar_button"]]
|
|||
|
||||
|
||||
func _initialize() -> void:
|
||||
scene = load("res://Main.tscn").instantiate()
|
||||
scene = load("res://world/Main.tscn").instantiate()
|
||||
root.add_child(scene)
|
||||
controller = scene.get_node("BuildController")
|
||||
readout = scene.get_node("UI/ResourceReadout")
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ var press_count: int = 0
|
|||
|
||||
|
||||
func _initialize() -> void:
|
||||
var packed: PackedScene = load("res://Main.tscn")
|
||||
var packed: PackedScene = load("res://world/Main.tscn")
|
||||
main_scene = packed.instantiate()
|
||||
root.add_child(main_scene)
|
||||
world_map = main_scene.get_node("UI/WorldMap")
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ var press_count: int = 0
|
|||
|
||||
|
||||
func _initialize() -> void:
|
||||
var packed: PackedScene = load("res://Main.tscn")
|
||||
var packed: PackedScene = load("res://world/Main.tscn")
|
||||
main_scene = packed.instantiate()
|
||||
root.add_child(main_scene)
|
||||
map_button = main_scene.get_node("UI/MapButton")
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue