editor: can switch tile type
parent
b535b3fe60
commit
742924fafc
|
@ -87,7 +87,7 @@ script = ExtResource( 1 )
|
||||||
|
|
||||||
[node name="blur" type="Sprite" parent="."]
|
[node name="blur" type="Sprite" parent="."]
|
||||||
material = SubResource( 2 )
|
material = SubResource( 2 )
|
||||||
scale = Vector2( 0.983894, 1 )
|
scale = Vector2( 0.976278, 1 )
|
||||||
centered = false
|
centered = false
|
||||||
|
|
||||||
[node name="pixelate" type="Sprite" parent="."]
|
[node name="pixelate" type="Sprite" parent="."]
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
extends Camera2D
|
||||||
|
|
||||||
|
|
||||||
|
# Declare member variables here. Examples:
|
||||||
|
# var a = 2
|
||||||
|
# var b = "text"
|
||||||
|
|
||||||
|
|
||||||
|
# Called when the node enters the scene tree for the first time.
|
||||||
|
func _ready():
|
||||||
|
pass # Replace with function body.
|
||||||
|
|
||||||
|
func ScreenToWorld (pos_screen: Vector2):
|
||||||
|
var camera_offset = OS.get_window_safe_area().size * 0.5 * zoom - transform.origin
|
||||||
|
return (pos_screen * zoom - camera_offset)
|
||||||
|
|
||||||
|
func WorldToScreen (pos_world: Vector2):
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
|
#func _process(delta):
|
||||||
|
# pass
|
|
@ -8,7 +8,7 @@ enum TileType {
|
||||||
|
|
||||||
var HexGrid = preload("res://thirdparty/gdhexgrid/HexGrid.gd").new()
|
var HexGrid = preload("res://thirdparty/gdhexgrid/HexGrid.gd").new()
|
||||||
|
|
||||||
var size = [2,6]
|
var size = [40,60]
|
||||||
var tile_size = 64
|
var tile_size = 64
|
||||||
|
|
||||||
var HexPoints = null
|
var HexPoints = null
|
||||||
|
@ -34,14 +34,14 @@ func clear():
|
||||||
for c in range (size[0]):
|
for c in range (size[0]):
|
||||||
tile_data.append(TileType.None)
|
tile_data.append(TileType.None)
|
||||||
|
|
||||||
func GetTile(c, r):
|
func GetTile(r, c):
|
||||||
if r < 0 or r >= size[1] or c < 0 or c >= size[0]:
|
if r < 0 or r >= size[1] or c < 0 or c >= size[0]:
|
||||||
print ("Invalid tile coord: ", r, ", ", c)
|
print ("Invalid tile coord: ", r, ", ", c)
|
||||||
return
|
return
|
||||||
|
|
||||||
return tile_data[c * size[1] + r]
|
return tile_data[c * size[1] + r]
|
||||||
|
|
||||||
func SetTile(c, r, tile_type):
|
func SetTile(r, c, tile_type):
|
||||||
if r < 0 or r >= size[1] or c < 0 or c >= size[0]:
|
if r < 0 or r >= size[1] or c < 0 or c >= size[0]:
|
||||||
print ("Invalid tile coord: ", r, ", ", c)
|
print ("Invalid tile coord: ", r, ", ", c)
|
||||||
return
|
return
|
||||||
|
@ -91,8 +91,7 @@ func draw_grid():
|
||||||
var tile_type = GetTile(ri, ci)
|
var tile_type = GetTile(ri, ci)
|
||||||
if tile_type == null:
|
if tile_type == null:
|
||||||
tile_type = TileType.None
|
tile_type = TileType.None
|
||||||
else:
|
|
||||||
print ("moep")
|
|
||||||
var color_array = HexColors[tile_type]
|
var color_array = HexColors[tile_type]
|
||||||
|
|
||||||
var tile_center = GetHexCenter(Vector2(ri, ci))
|
var tile_center = GetHexCenter(Vector2(ri, ci))
|
||||||
|
|
|
@ -9,25 +9,47 @@ var GridLevel
|
||||||
|
|
||||||
var highlight_hex_coord = Vector2(0,0)
|
var highlight_hex_coord = Vector2(0,0)
|
||||||
|
|
||||||
onready var screen_coords = get_node("HBoxContainer/Coords")
|
onready var camera = get_node("Camera2D")
|
||||||
onready var hex_coords = get_node("HBoxContainer/GridCoords")
|
onready var ui = get_node("Camera2D/UI")
|
||||||
|
onready var ScreenCoords = get_node("Camera2D/UI/ScreenCoords")
|
||||||
|
onready var HexCoords = get_node("Camera2D/UI/HexCoords")
|
||||||
|
onready var WorldCoords = get_node("Camera2D/UI/WorldCoords")
|
||||||
|
onready var TileType = get_node("Camera2D/UI/TileType")
|
||||||
|
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
GridLevel = get_node("GridLevel")
|
GridLevel = get_node("GridLevel")
|
||||||
|
TileType.add_item("None", 0)
|
||||||
|
TileType.add_item("Sand", 1)
|
||||||
|
TileType.add_item("Grass", 2)
|
||||||
update()
|
update()
|
||||||
|
|
||||||
|
func _process(_delta):
|
||||||
|
var view_size = OS.get_window_safe_area().size
|
||||||
|
ui.rect_position = -view_size * 0.5
|
||||||
|
update()
|
||||||
|
|
||||||
func _input(event):
|
func _unhandled_input(event):
|
||||||
if 'position' in event:
|
if 'position' in event:
|
||||||
screen_coords.text = str(event.position)
|
ScreenCoords.text = str(event.position)
|
||||||
var coords = GridLevel.WorldToTileCoords (event.position)
|
var world_coords = camera.ScreenToWorld(event.position)
|
||||||
hex_coords.text = str(coords)
|
WorldCoords.text = str(world_coords)
|
||||||
highlight_hex_coord = GridLevel.GetHexCenter(coords)
|
var hex_coords = GridLevel.WorldToTileCoords(world_coords)
|
||||||
|
|
||||||
|
HexCoords.text = str(hex_coords)
|
||||||
|
highlight_hex_coord = GridLevel.GetHexCenter(hex_coords)
|
||||||
|
|
||||||
if event is InputEventMouseButton:
|
if event is InputEventMouseButton:
|
||||||
if event.button_index == BUTTON_LEFT and event.pressed:
|
if event.button_index == BUTTON_LEFT and event.pressed:
|
||||||
GridLevel.SetTile (coords.x, coords.y, GridLevel.TileType.Sand)
|
GridLevel.SetTile (hex_coords.x, hex_coords.y, TileType.selected)
|
||||||
|
if event.button_index == BUTTON_WHEEL_DOWN and event.pressed:
|
||||||
|
camera.zoom = camera.zoom * 1.0 / 0.8
|
||||||
|
if event.button_index == BUTTON_WHEEL_UP and event.pressed:
|
||||||
|
camera.zoom = camera.zoom * 0.8
|
||||||
|
|
||||||
|
if event is InputEventMouseButton and Input.is_mouse_button_pressed(BUTTON_MIDDLE):
|
||||||
|
camera.transform.origin = world_coords
|
||||||
|
|
||||||
update()
|
update()
|
||||||
|
|
||||||
|
|
|
@ -1,89 +1,34 @@
|
||||||
[gd_scene load_steps=4 format=2]
|
[gd_scene load_steps=5 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://editor/GridLevel.gd" type="Script" id=1]
|
[ext_resource path="res://editor/GridLevel.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://editor/IslandEditor.gd" type="Script" id=2]
|
[ext_resource path="res://editor/IslandEditor.gd" type="Script" id=2]
|
||||||
[ext_resource path="res://editor/Area2D.gd" type="Script" id=3]
|
[ext_resource path="res://editor/Area2D.gd" type="Script" id=3]
|
||||||
|
[ext_resource path="res://editor/Camera2D.gd" type="Script" id=4]
|
||||||
|
|
||||||
[node name="Editor" type="Node2D"]
|
[node name="Editor" type="Node2D"]
|
||||||
script = ExtResource( 2 )
|
script = ExtResource( 2 )
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
|
||||||
margin_right = 40.0
|
|
||||||
margin_bottom = 40.0
|
|
||||||
__meta__ = {
|
|
||||||
"_edit_use_anchors_": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="New" type="Button" parent="HBoxContainer"]
|
|
||||||
margin_right = 44.0
|
|
||||||
margin_bottom = 40.0
|
|
||||||
text = "Clear"
|
|
||||||
|
|
||||||
[node name="SpinBox" type="SpinBox" parent="HBoxContainer"]
|
|
||||||
margin_left = 48.0
|
|
||||||
margin_right = 122.0
|
|
||||||
margin_bottom = 40.0
|
|
||||||
min_value = 1.0
|
|
||||||
max_value = 32.0
|
|
||||||
value = 1.0
|
|
||||||
|
|
||||||
[node name="OptionButton" type="OptionButton" parent="HBoxContainer"]
|
|
||||||
margin_left = 126.0
|
|
||||||
margin_right = 163.0
|
|
||||||
margin_bottom = 40.0
|
|
||||||
text = "0"
|
|
||||||
__meta__ = {
|
|
||||||
"_edit_use_anchors_": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="CoordsLabel" type="Label" parent="HBoxContainer"]
|
|
||||||
margin_left = 167.0
|
|
||||||
margin_top = 13.0
|
|
||||||
margin_right = 210.0
|
|
||||||
margin_bottom = 27.0
|
|
||||||
text = "Screen"
|
|
||||||
|
|
||||||
[node name="Coords" type="Label" parent="HBoxContainer"]
|
|
||||||
margin_left = 214.0
|
|
||||||
margin_top = 13.0
|
|
||||||
margin_right = 234.0
|
|
||||||
margin_bottom = 27.0
|
|
||||||
text = "0,0"
|
|
||||||
|
|
||||||
[node name="GridCoordsLabel" type="Label" parent="HBoxContainer"]
|
|
||||||
margin_left = 238.0
|
|
||||||
margin_top = 13.0
|
|
||||||
margin_right = 263.0
|
|
||||||
margin_bottom = 27.0
|
|
||||||
text = "Hex"
|
|
||||||
__meta__ = {
|
|
||||||
"_edit_use_anchors_": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="GridCoords" type="Label" parent="HBoxContainer"]
|
|
||||||
margin_left = 267.0
|
|
||||||
margin_top = 13.0
|
|
||||||
margin_right = 287.0
|
|
||||||
margin_bottom = 27.0
|
|
||||||
text = "0,0"
|
|
||||||
|
|
||||||
[node name="GridLevel" type="Node2D" parent="."]
|
[node name="GridLevel" type="Node2D" parent="."]
|
||||||
z_index = -2
|
z_index = -2
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
[node name="Area2D" type="Node2D" parent="."]
|
[node name="Camera2D" type="Camera2D" parent="."]
|
||||||
|
current = true
|
||||||
|
script = ExtResource( 4 )
|
||||||
|
|
||||||
|
[node name="Area2D" type="Node2D" parent="Camera2D"]
|
||||||
script = ExtResource( 3 )
|
script = ExtResource( 3 )
|
||||||
|
|
||||||
[node name="Highlight" type="Node2D" parent="Area2D"]
|
[node name="Highlight" type="Node2D" parent="Camera2D/Area2D"]
|
||||||
|
|
||||||
[node name="Highlight" type="Label" parent="Area2D/Highlight"]
|
[node name="Highlight" type="Label" parent="Camera2D/Area2D/Highlight"]
|
||||||
margin_top = 13.0
|
margin_top = 13.0
|
||||||
margin_bottom = 27.0
|
margin_bottom = 27.0
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="AreaCoords" type="Label" parent="Area2D/Highlight"]
|
[node name="AreaCoords" type="Label" parent="Camera2D/Area2D/Highlight"]
|
||||||
margin_left = 10.8379
|
margin_left = 10.8379
|
||||||
margin_top = 34.1084
|
margin_top = 34.1084
|
||||||
margin_right = 29.8379
|
margin_right = 29.8379
|
||||||
|
@ -92,7 +37,7 @@ __meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="HexCoords" type="Label" parent="Area2D/Highlight"]
|
[node name="HexCoords" type="Label" parent="Camera2D/Area2D/Highlight"]
|
||||||
margin_left = 8.0
|
margin_left = 8.0
|
||||||
margin_top = 13.0
|
margin_top = 13.0
|
||||||
margin_right = 27.0
|
margin_right = 27.0
|
||||||
|
@ -101,3 +46,82 @@ rect_pivot_offset = Vector2( -534.527, -13 )
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[node name="UI" type="HBoxContainer" parent="Camera2D"]
|
||||||
|
margin_right = 287.0
|
||||||
|
margin_bottom = 40.0
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="New" type="Button" parent="Camera2D/UI"]
|
||||||
|
margin_right = 44.0
|
||||||
|
margin_bottom = 40.0
|
||||||
|
text = "Clear"
|
||||||
|
|
||||||
|
[node name="SpinBox" type="SpinBox" parent="Camera2D/UI"]
|
||||||
|
margin_left = 48.0
|
||||||
|
margin_right = 122.0
|
||||||
|
margin_bottom = 40.0
|
||||||
|
min_value = 1.0
|
||||||
|
max_value = 32.0
|
||||||
|
value = 1.0
|
||||||
|
|
||||||
|
[node name="TileType" type="OptionButton" parent="Camera2D/UI"]
|
||||||
|
margin_left = 126.0
|
||||||
|
margin_right = 155.0
|
||||||
|
margin_bottom = 40.0
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="ScreenCoordsLabel" type="Label" parent="Camera2D/UI"]
|
||||||
|
margin_left = 159.0
|
||||||
|
margin_top = 13.0
|
||||||
|
margin_right = 202.0
|
||||||
|
margin_bottom = 27.0
|
||||||
|
text = "Screen"
|
||||||
|
|
||||||
|
[node name="ScreenCoords" type="Label" parent="Camera2D/UI"]
|
||||||
|
margin_left = 206.0
|
||||||
|
margin_top = 13.0
|
||||||
|
margin_right = 226.0
|
||||||
|
margin_bottom = 27.0
|
||||||
|
text = "0,0"
|
||||||
|
|
||||||
|
[node name="HexCoordsLabel" type="Label" parent="Camera2D/UI"]
|
||||||
|
margin_left = 230.0
|
||||||
|
margin_top = 13.0
|
||||||
|
margin_right = 255.0
|
||||||
|
margin_bottom = 27.0
|
||||||
|
text = "Hex"
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="HexCoords" type="Label" parent="Camera2D/UI"]
|
||||||
|
margin_left = 259.0
|
||||||
|
margin_top = 13.0
|
||||||
|
margin_right = 279.0
|
||||||
|
margin_bottom = 27.0
|
||||||
|
text = "0,0"
|
||||||
|
|
||||||
|
[node name="WorldCoordsLabel" type="Label" parent="Camera2D/UI"]
|
||||||
|
margin_left = 283.0
|
||||||
|
margin_top = 13.0
|
||||||
|
margin_right = 321.0
|
||||||
|
margin_bottom = 27.0
|
||||||
|
text = "World"
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="WorldCoords" type="Label" parent="Camera2D/UI"]
|
||||||
|
margin_left = 325.0
|
||||||
|
margin_top = 13.0
|
||||||
|
margin_right = 345.0
|
||||||
|
margin_bottom = 27.0
|
||||||
|
text = "0,0"
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue