summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2020-07-15 10:55:47 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2020-07-15 10:55:47 +0200
commit594a82b45e5d9dcd90faad8fa4f8eb42b2c981b6 (patch)
treef44fbc21362e79fb8f9c987b542406cb7d61ca71
parent9274d1351f527de8ccee89eaccea1cf5dc141756 (diff)
downloadgodot-hexgrid-594a82b45e5d9dcd90faad8fa4f8eb42b2c981b6.zip
godot-hexgrid-594a82b45e5d9dcd90faad8fa4f8eb42b2c981b6.tar.gz
add zoom buttons, support one button mouse, add font
-rw-r--r--Hex.gd4
-rw-r--r--Main.gd23
-rw-r--r--Main.tscn130
-rw-r--r--Map.gd5
-rw-r--r--assets/Anke.otfbin0 -> 24364 bytes
-rw-r--r--project.godot5
6 files changed, 110 insertions, 57 deletions
diff --git a/Hex.gd b/Hex.gd
index 32e4083..1e343b7 100644
--- a/Hex.gd
+++ b/Hex.gd
@@ -14,8 +14,8 @@ func inspect() -> String:
if type == 0: s = 'city'
elif type == 1: s = 'wood'
elif type == 2: s = 'mountain'
- elif type == 3: s = 'impracticable'
- return "%s e:%d h:%d c:%d r:%d\n -> [%d;%d]\n -> (%d;%d)" % [s, elevation(), height(), cost(), roads, coords.x, coords.y, position.x, position.y]
+ elif type == 3: s = 'blocked'
+ return "[%d;%d]\n -> (%d;%d)\n -> %s\ne:%d h:%d c:%d r:%d" % [coords.x, coords.y, position.x, position.y, s, elevation(), height(), cost(), roads]
func has_road(o : int) -> bool:
return (o & roads) > 0
diff --git a/Main.gd b/Main.gd
index 03c9773..5e82637 100644
--- a/Main.gd
+++ b/Main.gd
@@ -1,6 +1,7 @@
#warning-ignore-all:return_value_discarded
extends Node2D
+var moved : int = 0
var drag_map : bool = false
onready var UI : Control = $CanvasLayer/HBOX/UI
@@ -9,6 +10,8 @@ onready var Camera : Camera2D = $CanvasLayer/HBOX/ViewportContainer/Viewport/Cam
func _ready():
UI.get_node("rotate").connect("pressed", self, "on_rotate")
+ UI.get_node("zin").connect("pressed", self, "on_zoom", [true])
+ UI.get_node("zout").connect("pressed", self, "on_zoom", [false])
UI.get_node("LOS").connect("pressed", self, "on_toggle")
UI.get_node("Move").connect("pressed", self, "on_toggle")
Map.connect("hex_touched", self, "on_hex_touched")
@@ -23,6 +26,9 @@ func on_rotate() -> void:
Map.rotate_map()
on_viewport_resized()
+func on_zoom(b : bool) -> void:
+ Camera.update_camera(0, 0, -0.05 if b else 0.05)
+
func on_toggle() -> void:
Map.set_mode(UI.get_node("LOS").pressed, UI.get_node("Move").pressed)
@@ -35,17 +41,22 @@ func _unhandled_input(event : InputEvent) -> void:
if drag_map:
var dv : Vector2 = event.relative * Camera.zoom
Camera.update_camera(-dv.x, -dv.y, 0)
+ moved += 1
else:
Map.on_mouse_move()
elif event is InputEventMouseButton:
- if event.button_index == 4:
- Camera.update_camera(0, 0, -0.05)
- elif event.button_index == 5:
- Camera.update_camera(0, 0, +0.05)
+ if event.button_index == 1:
+ if moved < 5:
+ drag_map = Map.on_click(event.pressed)
+ else:
+ drag_map = false
+ moved = 0
elif event.button_index == 3:
drag_map = event.pressed
- elif event.button_index == 1:
- Map.on_click(event.pressed)
+ elif event.button_index == 4:
+ on_zoom(true)
+ elif event.button_index == 5:
+ on_zoom(false)
elif event is InputEventKey:
if event.scancode == KEY_ESCAPE:
get_tree().quit()
diff --git a/Main.tscn b/Main.tscn
index 67ca3ed..eecc8ba 100644
--- a/Main.tscn
+++ b/Main.tscn
@@ -1,12 +1,20 @@
-[gd_scene load_steps=7 format=2]
+[gd_scene load_steps=10 format=2]
[ext_resource path="res://Camera.gd" type="Script" id=1]
[ext_resource path="res://Map.gd" type="Script" id=2]
[ext_resource path="res://Main.gd" type="Script" id=3]
[ext_resource path="res://Los.gd" type="Script" id=4]
+[ext_resource path="res://assets/Anke.otf" type="DynamicFontData" id=5]
[ext_resource path="res://assets/target.png" type="Texture" id=6]
[ext_resource path="res://assets/tank.png" type="Texture" id=7]
+[sub_resource type="DynamicFont" id=1]
+size = 35
+font_data = ExtResource( 5 )
+
+[sub_resource type="Theme" id=2]
+default_font = SubResource( 1 )
+
[node name="Main" type="Node2D"]
script = ExtResource( 3 )
@@ -22,53 +30,9 @@ __meta__ = {
"_edit_use_anchors_": false
}
-[node name="UI" type="VBoxContainer" parent="CanvasLayer/HBOX"]
-margin_right = 150.0
-margin_bottom = 600.0
-rect_min_size = Vector2( 150, 0 )
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="rotate" type="Button" parent="CanvasLayer/HBOX/UI"]
-margin_right = 150.0
-margin_bottom = 20.0
-text = "Rotate"
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="LOS" type="CheckBox" parent="CanvasLayer/HBOX/UI"]
-margin_top = 24.0
-margin_right = 150.0
-margin_bottom = 48.0
-pressed = true
-text = "LOS"
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="Move" type="CheckBox" parent="CanvasLayer/HBOX/UI"]
-margin_top = 52.0
-margin_right = 150.0
-margin_bottom = 76.0
-text = "Move"
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
-[node name="Info" type="Label" parent="CanvasLayer/HBOX/UI"]
-margin_top = 80.0
-margin_right = 150.0
-margin_bottom = 94.0
-__meta__ = {
-"_edit_use_anchors_": false
-}
-
[node name="ViewportContainer" type="ViewportContainer" parent="CanvasLayer/HBOX"]
-margin_left = 154.0
-margin_right = 1024.0
-margin_bottom = 600.0
+margin_right = 1666.0
+margin_bottom = 1080.0
rect_min_size = Vector2( 100, 100 )
mouse_filter = 2
size_flags_horizontal = 3
@@ -79,7 +43,7 @@ __meta__ = {
}
[node name="Viewport" type="Viewport" parent="CanvasLayer/HBOX/ViewportContainer"]
-size = Vector2( 870, 600 )
+size = Vector2( 1666, 1080 )
handle_input_locally = false
render_target_update_mode = 3
@@ -102,3 +66,73 @@ script = ExtResource( 4 )
[node name="Camera" type="Camera2D" parent="CanvasLayer/HBOX/ViewportContainer/Viewport"]
current = true
script = ExtResource( 1 )
+
+[node name="UI" type="VBoxContainer" parent="CanvasLayer/HBOX"]
+margin_left = 1670.0
+margin_right = 1920.0
+margin_bottom = 1080.0
+rect_min_size = Vector2( 250, 0 )
+theme = SubResource( 2 )
+custom_constants/separation = 30
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="rotate" type="Button" parent="CanvasLayer/HBOX/UI"]
+margin_right = 250.0
+margin_bottom = 100.0
+rect_min_size = Vector2( 0, 100 )
+size_flags_horizontal = 3
+text = "Rotate"
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="zin" type="Button" parent="CanvasLayer/HBOX/UI"]
+margin_top = 130.0
+margin_right = 250.0
+margin_bottom = 230.0
+rect_min_size = Vector2( 0, 100 )
+size_flags_horizontal = 3
+text = "Z IN"
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="zout" type="Button" parent="CanvasLayer/HBOX/UI"]
+margin_top = 260.0
+margin_right = 250.0
+margin_bottom = 360.0
+rect_min_size = Vector2( 0, 100 )
+size_flags_horizontal = 3
+text = "Z OUT"
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="LOS" type="CheckBox" parent="CanvasLayer/HBOX/UI"]
+margin_top = 390.0
+margin_right = 250.0
+margin_bottom = 434.0
+pressed = true
+text = "LOS"
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Move" type="CheckBox" parent="CanvasLayer/HBOX/UI"]
+margin_top = 464.0
+margin_right = 250.0
+margin_bottom = 508.0
+text = "Move"
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Info" type="Label" parent="CanvasLayer/HBOX/UI"]
+margin_top = 538.0
+margin_right = 250.0
+margin_bottom = 574.0
+__meta__ = {
+"_edit_use_anchors_": false
+}
diff --git a/Map.gd b/Map.gd
index 5a4da33..d23ea5a 100644
--- a/Map.gd
+++ b/Map.gd
@@ -87,7 +87,7 @@ func on_mouse_move() -> void:
if drag != null:
drag.position = get_local_mouse_position()
-func on_click(pressed : bool) -> void:
+func on_click(pressed : bool) -> bool:
var pos : Vector2 = get_local_mouse_position()
var coords : Vector2 = board.to_map(pos)
if pressed:
@@ -97,6 +97,8 @@ func on_click(pressed : bool) -> void:
drag = $Tank
elif board.to_map($Target.position) == coords:
drag = $Target
+ else:
+ return true
else:
if drag:
if board.is_on_map(coords):
@@ -111,6 +113,7 @@ func on_click(pressed : bool) -> void:
else:
if coords == prev and board.is_on_map(coords):
change_tile(coords, pos)
+ return false
func change_tile(coords : Vector2, pos : Vector2) -> void:
var hex : Hex = board.get_tile(coords)
diff --git a/assets/Anke.otf b/assets/Anke.otf
new file mode 100644
index 0000000..c577d63
--- /dev/null
+++ b/assets/Anke.otf
Binary files differ
diff --git a/project.godot b/project.godot
index 03a9823..657540a 100644
--- a/project.godot
+++ b/project.godot
@@ -47,3 +47,8 @@ _global_script_class_icons={
config/name="hexgrid_demo"
run/main_scene="res://Main.tscn"
config/icon="res://icon.png"
+
+[display]
+
+window/size/width=1920
+window/size/height=1080