85 lines
3.2 KiB
GDScript
85 lines
3.2 KiB
GDScript
extends Node2D
|
|
|
|
const DEFINITION := preload("res://resources/items/external_turret.tres")
|
|
|
|
func _ready() -> void:
|
|
GameState.start_new_run()
|
|
var game := preload("res://scenes/game/game.tscn").instantiate()
|
|
add_child(game)
|
|
game.set_physics_process(false)
|
|
var ship: CharacterBody2D = game.player
|
|
ship.set_physics_process(false)
|
|
ship.get_node("WeaponController").set_physics_process(false)
|
|
ship.get_node("ExtensionSystems").set_physics_process(false)
|
|
for enemy in get_tree().get_nodes_in_group("enemies"): enemy.queue_free()
|
|
ship.position = Vector2(0,1500)
|
|
ship.rotation = 0.0
|
|
ship.get_node("Camera2D").reset_smoothing()
|
|
var inventory: ShipInventory = ship.get_node("ShipInventory")
|
|
var item := ItemInstance.new()
|
|
item.definition = DEFINITION
|
|
inventory.weapon_slots[0] = item
|
|
inventory.ammunition = 300
|
|
inventory.inventory_changed.emit()
|
|
var targets: Array[Node2D] = []
|
|
for point in [Vector2(-260,-160),Vector2(260,-160)]:
|
|
var enemy := preload("res://scenes/game/enemy_ship.tscn").instantiate()
|
|
enemy.position = ship.position+point
|
|
game.add_child(enemy)
|
|
enemy.set_physics_process(false)
|
|
enemy._player = ship
|
|
enemy.max_hull = 10000.0
|
|
enemy.hull = 10000.0
|
|
targets.append(enemy)
|
|
for point in [Vector2(-120,-70),Vector2(0,-120),Vector2(120,-70)]:
|
|
var turret := Node2D.new()
|
|
turret.set_script(preload("res://scripts/game/deployed_turret.gd"))
|
|
turret.mother = ship
|
|
turret.weapon = item
|
|
turret.position = ship.position+point
|
|
game.add_child(turret)
|
|
turret.set_physics_process(false)
|
|
turret._age = 1.0
|
|
turret._fire_timer = 0.0
|
|
turret._physics_process(0.1)
|
|
var layer := CanvasLayer.new()
|
|
layer.layer = 100
|
|
add_child(layer)
|
|
var panel := PanelContainer.new()
|
|
panel.position = Vector2(340,80)
|
|
var style := StyleBoxFlat.new()
|
|
style.bg_color = Color("07121ee8")
|
|
style.border_color = Color("619ab9")
|
|
style.set_border_width_all(1)
|
|
style.set_corner_radius_all(8)
|
|
style.set_content_margin_all(14)
|
|
panel.add_theme_stylebox_override("panel",style)
|
|
layer.add_child(panel)
|
|
var row := HBoxContainer.new()
|
|
row.add_theme_constant_override("separation",14)
|
|
panel.add_child(row)
|
|
var icon := TextureRect.new()
|
|
icon.texture = DEFINITION.icon
|
|
icon.custom_minimum_size = Vector2(72,72)
|
|
icon.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
|
|
icon.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
|
|
row.add_child(icon)
|
|
var text := Label.new()
|
|
text.text = "DZIAŁKA ZEWNĘTRZNE\n50 amunicji → 1 działko • 50 pocisków\nPołowa obrażeń działka maszynowego • Zasięg 550"
|
|
text.add_theme_font_size_override("font_size",15)
|
|
row.add_child(text)
|
|
for frame in 12: await get_tree().process_frame
|
|
for turret in get_tree().get_nodes_in_group("player_external_turrets"):
|
|
turret.rotation = (targets[0].position-turret.position).angle()+PI*0.5
|
|
turret._fire(targets[0])
|
|
for child in game.get_children():
|
|
if child.get_script() == preload("res://scripts/game/weapon_projectile.gd"):
|
|
child.set_physics_process(false)
|
|
child.position += child.direction*55.0
|
|
turret.queue_redraw()
|
|
await get_tree().process_frame
|
|
await RenderingServer.frame_post_draw
|
|
assert(get_viewport().get_texture().get_image().save_png("res://artifacts/external_turret_preview.png") == OK)
|
|
print("EXTERNAL_TURRET_PREVIEW: PASS")
|
|
get_tree().quit()
|