Slow logistics vessel travel
This commit is contained in:
parent
db0e6a0ec2
commit
20ba0011fa
8 changed files with 49 additions and 6 deletions
|
|
@ -368,7 +368,7 @@ var stored_vessels: Array = []
|
|||
# hangar. State is authoritative here so delivery continues off-screen.
|
||||
# {"type", "from", "to", "progress"}
|
||||
var vessel_deliveries: Array = []
|
||||
const VESSEL_DELIVERY_SPEED: float = 950.0
|
||||
const VESSEL_DELIVERY_SPEED: float = 180.0
|
||||
|
||||
signal order_completed(building_id: int, type: String)
|
||||
|
||||
|
|
@ -436,7 +436,7 @@ const SHIP_BASE_ACCEL: float = 450.0
|
|||
const SHIELD_BASE_CHARGES: int = 1
|
||||
const SHIELD_BASE_RECHARGE: float = 6.0
|
||||
const TRANSPORTER_BASE_LOAD: int = 20
|
||||
const TRANSPORTER_BASE_SPEED: float = 340.0
|
||||
const TRANSPORTER_BASE_SPEED: float = 150.0
|
||||
|
||||
var vessel_levels: Dictionary = {}
|
||||
|
||||
|
|
@ -987,7 +987,10 @@ func _advance_vessel_deliveries(delta: float) -> void:
|
|||
for i in range(vessel_deliveries.size() - 1, -1, -1):
|
||||
var delivery: Dictionary = vessel_deliveries[i]
|
||||
var distance: float = (delivery.from as Vector2).distance_to(delivery.to as Vector2)
|
||||
delivery.progress = float(delivery.progress) + delta / maxf(distance / VESSEL_DELIVERY_SPEED, 0.001)
|
||||
var delivery_speed: float = vessel_stat(String(delivery.type), "delivery_speed")
|
||||
if delivery_speed <= 0.0:
|
||||
delivery_speed = VESSEL_DELIVERY_SPEED
|
||||
delivery.progress = float(delivery.progress) + delta / maxf(distance / delivery_speed, 0.001)
|
||||
if float(delivery.progress) >= 1.0:
|
||||
stored_vessels.append(String(delivery.type))
|
||||
vessel_deliveries.remove_at(i)
|
||||
|
|
|
|||
|
|
@ -16,5 +16,5 @@ icon = 2
|
|||
glow_color = Color(0.25, 0.85, 1, 1)
|
||||
capabilities = PackedStringArray("weapon")
|
||||
component_scenes = Array[PackedScene]([ExtResource("2")])
|
||||
base_stats = {"damage": 1.0, "fire_cooldown": 0.5, "fire_range": 320.0, "max_speed": 460.0, "acceleration": 450.0}
|
||||
base_stats = {"damage": 1.0, "fire_cooldown": 0.5, "fire_range": 320.0, "max_speed": 460.0, "acceleration": 450.0, "delivery_speed": 180.0}
|
||||
upgrades = Array[Resource]([ExtResource("3"), ExtResource("4"), ExtResource("5"), ExtResource("6")])
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ icon = 2
|
|||
glow_color = Color(0.45, 0.8, 1, 1)
|
||||
capabilities = PackedStringArray("weapon", "shield")
|
||||
component_scenes = Array[PackedScene]([ExtResource("2"), ExtResource("3")])
|
||||
base_stats = {"damage": 1.0, "fire_cooldown": 0.5, "fire_range": 320.0, "max_speed": 460.0, "acceleration": 450.0, "shield_charges": 1.0, "shield_recharge": 6.0}
|
||||
base_stats = {"damage": 1.0, "fire_cooldown": 0.5, "fire_range": 320.0, "max_speed": 460.0, "acceleration": 450.0, "shield_charges": 1.0, "shield_recharge": 6.0, "delivery_speed": 180.0}
|
||||
minimum_stats = {"shield_recharge": 2.0}
|
||||
upgrades = Array[Resource]([ExtResource("4"), ExtResource("5"), ExtResource("6")])
|
||||
unlock_id = "unlock_shield"
|
||||
|
|
|
|||
|
|
@ -15,5 +15,5 @@ icon = 12
|
|||
glow_color = Color(0.95, 0.55, 0.85, 1)
|
||||
capabilities = PackedStringArray("cargo", "transport")
|
||||
component_scenes = Array[PackedScene]([ExtResource("2"), ExtResource("3")])
|
||||
base_stats = {"max_speed": 460.0, "acceleration": 450.0, "cargo_capacity": 20.0, "transport_speed": 340.0}
|
||||
base_stats = {"max_speed": 460.0, "acceleration": 450.0, "cargo_capacity": 20.0, "transport_speed": 150.0, "delivery_speed": 180.0}
|
||||
upgrades = Array[Resource]([ExtResource("4"), ExtResource("5")])
|
||||
|
|
|
|||
1
tests/_extractor_transfer_preview.gd.uid
Normal file
1
tests/_extractor_transfer_preview.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://bgoci6v44t6eg
|
||||
1
tests/test_extractor_transfer.gd.uid
Normal file
1
tests/test_extractor_transfer.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://bak3xyval0qsj
|
||||
37
tests/test_logistics_travel_speed.gd
Normal file
37
tests/test_logistics_travel_speed.gd
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
extends SceneTree
|
||||
|
||||
|
||||
func _initialize() -> void:
|
||||
var state: Node = root.get_node("GameState")
|
||||
state.vessel_deliveries.clear()
|
||||
state.transporters.clear()
|
||||
state.buildings.clear()
|
||||
state.reset_progression()
|
||||
var delivery_speed: float = state.vessel_stat("interceptor", "delivery_speed")
|
||||
var transport_speed: float = state.transporter_speed()
|
||||
if delivery_speed >= 300.0 or transport_speed >= 300.0:
|
||||
return _fail("logistics still rushes at delivery %.0f / transport %.0f" % [delivery_speed, transport_speed])
|
||||
|
||||
state.vessel_deliveries.append({"type": "interceptor", "from": Vector2.ZERO,
|
||||
"to": Vector2(900, 0), "progress": 0.0})
|
||||
state._advance_vessel_deliveries(1.0)
|
||||
var delivery_progress: float = state.vessel_deliveries[0].progress
|
||||
if delivery_progress < 0.18 or delivery_progress > 0.22:
|
||||
return _fail("900-unit delivery advanced %.3f in one second" % delivery_progress)
|
||||
|
||||
state.transporters.append({"hub_id": 0, "state": state.TRANSPORTER_RETURNING,
|
||||
"target_id": 0, "carrying": 0, "progress": 0.0,
|
||||
"from": Vector2.ZERO, "to": Vector2(600, 0)})
|
||||
state._advance_transporters(1.0)
|
||||
var transport_progress: float = state.transporters[0].progress
|
||||
if transport_progress < 0.23 or transport_progress > 0.27:
|
||||
return _fail("600-unit transport leg advanced %.3f in one second" % transport_progress)
|
||||
|
||||
print("delivery %.0f u/s, transporter %.0f u/s" % [delivery_speed, transport_speed])
|
||||
print("TEST_LOGISTICS_TRAVEL_SPEED: PASS")
|
||||
quit(0)
|
||||
|
||||
|
||||
func _fail(message: String) -> void:
|
||||
print("TEST_LOGISTICS_TRAVEL_SPEED: FAIL (%s)" % message)
|
||||
quit(1)
|
||||
1
tests/test_logistics_travel_speed.gd.uid
Normal file
1
tests/test_logistics_travel_speed.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://cmrsrj2j5yblk
|
||||
Loading…
Reference in a new issue