1
0
Fork 0

refactoring

This commit is contained in:
Michaël Lemaire 2022-10-24 00:50:48 +02:00
parent 3840c135a7
commit a1fc8d912a
12 changed files with 137 additions and 94 deletions

View File

@ -1,4 +1,4 @@
extends CanvasLayer
extends Node2D
class_name BattleField
var _ticker1 := 0.0

View File

@ -2,6 +2,5 @@
[ext_resource type="Script" path="res://core/battlefield.gd" id="1_u7icn"]
[node name="battlefield" type="CanvasLayer"]
follow_viewport_enabled = true
[node name="battlefield" type="Node2D"]
script = ExtResource("1_u7icn")

12
core/ui/camera.gd Normal file
View File

@ -0,0 +1,12 @@
extends Camera2D
var raw_zoom := 0.0
func scroll(diff: Vector2):
position -= diff
func change_zoom(diff: float):
raw_zoom = clampf(raw_zoom + diff, -2, 2)
var z := pow(2.0, raw_zoom)
zoom = Vector2(z, z)

10
core/ui/camera.tscn Normal file
View File

@ -0,0 +1,10 @@
[gd_scene load_steps=2 format=3 uid="uid://ck41r2je85sm3"]
[ext_resource type="Script" path="res://core/ui/camera.gd" id="1_pdh08"]
[node name="camera" type="Camera2D"]
position = Vector2(640, 360)
current = true
position_smoothing_enabled = true
position_smoothing_speed = 12.0
script = ExtResource("1_pdh08")

View File

@ -11,11 +11,20 @@ signal clicked
else:
icon = PlaceholderTexture2D.new()
_check_compose()
@export var color: Color:
set(val):
if val is Color:
color = val
else:
color = Color.BLACK
_check_compose()
@export var code: String
func _compose():
$badge/icon.texture = icon
$badge.self_modulate = color
super._compose()
func _on_click_input_event(viewport, event, shape_idx):

View File

@ -4,7 +4,7 @@
[sub_resource type="Gradient" id="Gradient_i2fje"]
offsets = PackedFloat32Array(0, 0.845528, 1)
colors = PackedColorArray(0.631696, 0, 0.0105082, 1, 0.604306, 0, 0.0100526, 0.95664, 0, 0, 0, 0)
colors = PackedColorArray(0.51, 0.51, 0.51, 1, 0.6, 0.6, 0.6, 0.956863, 0, 0, 0, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_3dnb6"]
gradient = SubResource("Gradient_i2fje")
@ -19,6 +19,7 @@ radius = 80.0
[node name="command" type="Node2D"]
script = ExtResource("1_bwbsk")
code = ""
[node name="badge" type="Sprite2D" parent="."]
texture = SubResource("GradientTexture2D_3dnb6")

View File

@ -1,4 +1,4 @@
extends CanvasLayer
extends Node
@export var player: Node:
set(val):
@ -6,44 +6,46 @@ extends CanvasLayer
player = val
else:
player = null
@export var camera: Camera2D
@export var available_commands: Array[PackedScene]
signal commands_changed(commander, commands)
func _ready():
$stock.visible = false
$wheel.visible = false
%stock.visible = false
%wheel.visible = false
if available_commands:
for command_scene in available_commands:
var command := command_scene.instantiate()
$stock.add_child(command)
%stock.add_child(command)
func _unhandled_input(event: InputEvent):
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_LEFT and not event.pressed:
get_viewport().set_input_as_handled()
_show_command_wheel(event.position)
func _show_command_wheel(pos: Vector2):
var wheel := $wheel as Node2D
var wheel := %wheel as Node2D
wheel.position = pos
# TODO center cam ?
for command in $wheel.get_children():
for command in %wheel.get_children():
command.queue_free()
for command in $stock.get_children():
for command in %stock.get_children():
# TODO only available
command = command.duplicate()
command.color = player.color
command.connect("clicked", _on_wheel_command_clicked.bind(command))
$wheel.add_child(command)
%wheel.add_child(command)
wheel.visible = true
func _on_wheel_command_clicked(command: Command):
command.apply($active, $wheel.position)
$wheel.visible = false
commands_changed.emit(player, $active.get_children())
command.apply(%active, %wheel.position)
%wheel.visible = false
commands_changed.emit(player, %active.get_children())
func background_clicked(pos):
if camera:
pos = camera.get_canvas_transform().inverse() * pos
_show_command_wheel(pos)

View File

@ -2,14 +2,15 @@
[ext_resource type="Script" path="res://core/ui/commands.gd" id="1_8b4dn"]
[node name="commands" type="CanvasLayer"]
layer = 2
follow_viewport_enabled = true
[node name="commands" type="Node2D"]
script = ExtResource("1_8b4dn")
[node name="wheel" type="Node2D" parent="."]
[node name="stock" type="Node2D" parent="."]
unique_name_in_owner = true
visible = false
[node name="wheel" type="Node2D" parent="."]
unique_name_in_owner = true
[node name="active" type="Node2D" parent="."]
unique_name_in_owner = true

36
core/ui/inputs.gd Normal file
View File

@ -0,0 +1,36 @@
extends Control
signal scrolled(diff: Vector2)
signal clicked(pos: Vector2)
signal zoomed(diff: float)
var pressed = false
func _ready():
get_viewport().connect("size_changed", resize)
resize()
func resize():
set_deferred("size", get_viewport().size)
func _gui_input(event):
if event is InputEventMouseMotion:
if event.button_mask & MOUSE_BUTTON_LEFT:
pressed = false
scrolled.emit(event.relative)
accept_event()
if event is InputEventMouseButton:
if event.pressed:
if event.button_index == MOUSE_BUTTON_WHEEL_UP:
zoomed.emit(signf(event.factor))
accept_event()
elif event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
zoomed.emit(-signf(event.factor))
accept_event()
elif event.button_index == MOUSE_BUTTON_LEFT:
pressed = true
else:
if event.button_index == MOUSE_BUTTON_LEFT and pressed:
accept_event()
pressed = false
clicked.emit(event.position)

15
core/ui/inputs.tscn Normal file
View File

@ -0,0 +1,15 @@
[gd_scene load_steps=2 format=3 uid="uid://boo6ta2m7e55o"]
[ext_resource type="Script" path="res://core/ui/inputs.gd" id="1_wm60j"]
[node name="inputs" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
mouse_force_pass_scroll_events = false
script = ExtResource("1_wm60j")

View File

@ -1,91 +1,49 @@
[gd_scene load_steps=8 format=3 uid="uid://c6omib6txy3qh"]
[ext_resource type="PackedScene" uid="uid://ck41r2je85sm3" path="res://core/ui/camera.tscn" id="1_7evrt"]
[ext_resource type="PackedScene" uid="uid://brbtq46uk18gg" path="res://core/battlefield.tscn" id="1_x63ik"]
[ext_resource type="PackedScene" uid="uid://dqaabctftkakr" path="res://core/player.tscn" id="2_o4smw"]
[ext_resource type="PackedScene" uid="uid://boo6ta2m7e55o" path="res://core/ui/inputs.tscn" id="2_wkcj2"]
[ext_resource type="PackedScene" uid="uid://b8uik6q4v35o3" path="res://tac/units/factory.tscn" id="2_wnc50"]
[ext_resource type="PackedScene" uid="uid://xoup4vukp3ni" path="res://core/ui/commands.tscn" id="4_1gkbi"]
[ext_resource type="PackedScene" uid="uid://dr1e0h27nuam" path="res://tac/commands/delivery.tscn" id="5_fi2mi"]
[sub_resource type="GDScript" id="GDScript_8ehhf"]
script/source = "extends Camera2D
var raw_zoom := 0
func scroll(diff: Vector2):
position -= diff
func change_zoom(diff: float):
raw_zoom = clampf(raw_zoom + diff, -2, 2)
var z := pow(2.0, raw_zoom)
zoom = Vector2(z, z)
"
[sub_resource type="GDScript" id="GDScript_0auct"]
script/source = "extends Control
signal scrolled(diff)
signal zoomed(diff)
func _unhandled_input(event):
if event is InputEventMouseMotion:
if event.button_mask & MOUSE_BUTTON_LEFT:
scrolled.emit(event.relative)
accept_event()
if event is InputEventMouseButton and event.pressed:
if event.button_index == MOUSE_BUTTON_WHEEL_UP:
zoomed.emit(signf(event.factor))
accept_event()
elif event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
zoomed.emit(-signf(event.factor))
accept_event()
"
[node name="main" type="Node2D"]
[node name="camera" type="Camera2D" parent="."]
position = Vector2(640, 360)
current = true
script = SubResource("GDScript_8ehhf")
[node name="camera" parent="." instance=ExtResource("1_7evrt")]
[node name="battlefield" parent="." instance=ExtResource("1_x63ik")]
[node name="backui" type="CanvasLayer" parent="."]
layer = -1
[node name="player1" parent="battlefield" instance=ExtResource("2_o4smw")]
[node name="inputs" parent="backui" instance=ExtResource("2_wkcj2")]
[node name="world" type="CanvasLayer" parent="."]
follow_viewport_enabled = true
[node name="player1" parent="world" instance=ExtResource("2_o4smw")]
color = Color(0, 0, 1, 1)
code = "p1"
[node name="player2" parent="battlefield" instance=ExtResource("2_o4smw")]
[node name="player2" parent="world" instance=ExtResource("2_o4smw")]
color = Color(1, 0, 0, 1)
code = "p2"
[node name="factory1" parent="battlefield" node_paths=PackedStringArray("player") instance=ExtResource("2_wnc50")]
[node name="battlefield" parent="world" instance=ExtResource("1_x63ik")]
[node name="factory1" parent="world/battlefield" node_paths=PackedStringArray("player") instance=ExtResource("2_wnc50")]
position = Vector2(270, 222)
player = NodePath("../player1")
player = NodePath("../../player1")
[node name="factory2" parent="battlefield" node_paths=PackedStringArray("player") instance=ExtResource("2_wnc50")]
[node name="factory2" parent="world/battlefield" node_paths=PackedStringArray("player") instance=ExtResource("2_wnc50")]
position = Vector2(929, 429)
player = NodePath("../player2")
player = NodePath("../../player2")
[node name="commands" parent="." node_paths=PackedStringArray("player") instance=ExtResource("4_1gkbi")]
player = NodePath("../battlefield/player1")
[node name="commands" parent="world" node_paths=PackedStringArray("player", "camera") instance=ExtResource("4_1gkbi")]
player = NodePath("../player1")
camera = NodePath("../../camera")
available_commands = [ExtResource("5_fi2mi")]
[node name="ui" type="CanvasLayer" parent="."]
layer = 3
[node name="camcontrol" type="Control" parent="ui"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
mouse_filter = 2
mouse_force_pass_scroll_events = false
script = SubResource("GDScript_0auct")
[connection signal="commands_changed" from="commands" to="battlefield" method="_on_commands_changed"]
[connection signal="scrolled" from="ui/camcontrol" to="camera" method="scroll"]
[connection signal="zoomed" from="ui/camcontrol" to="camera" method="change_zoom"]
[connection signal="clicked" from="backui/inputs" to="world/commands" method="background_clicked"]
[connection signal="scrolled" from="backui/inputs" to="camera" method="scroll"]
[connection signal="zoomed" from="backui/inputs" to="camera" method="change_zoom"]
[connection signal="commands_changed" from="world/commands" to="world/battlefield" method="_on_commands_changed"]

View File

@ -9,7 +9,7 @@
config_version=5
_global_script_classes=[{
"base": "CanvasLayer",
"base": "Node2D",
"class": &"BattleField",
"language": &"GDScript",
"path": "res://core/battlefield.gd"