File renaming pass
This commit is contained in:
parent
ea31a0363b
commit
e76a7b1f83
1
game.gd.uid
Normal file
1
game.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://b2ytri51qn3r0
|
||||
50
game.tscn
Normal file
50
game.tscn
Normal file
@ -0,0 +1,50 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://x8xo5b1b3q41"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b2ytri51qn3r0" path="res://game.gd" id="1_feb5d"]
|
||||
[ext_resource type="PackedScene" uid="uid://0d1d5e1u2fys" path="res://places/place_manager.tscn" id="2_fc0e3"]
|
||||
[ext_resource type="Script" uid="uid://cgfibq8ku7tey" path="res://interface/game_cam.gd" id="3_7jktm"]
|
||||
|
||||
[node name="Game" type="Node"]
|
||||
script = ExtResource("1_feb5d")
|
||||
|
||||
[node name="InterfaceLayer" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="SelectToggle" type="CheckButton" parent="InterfaceLayer"]
|
||||
offset_left = 1008.0
|
||||
offset_top = 18.0
|
||||
offset_right = 1120.0
|
||||
offset_bottom = 49.0
|
||||
text = "Building"
|
||||
|
||||
[node name="BuildButton" type="Button" parent="InterfaceLayer"]
|
||||
offset_left = 1033.0
|
||||
offset_top = 59.0
|
||||
offset_right = 1081.0
|
||||
offset_bottom = 90.0
|
||||
text = "Build"
|
||||
|
||||
[node name="DestroyButton" type="Button" parent="InterfaceLayer"]
|
||||
offset_left = 1031.0
|
||||
offset_top = 105.0
|
||||
offset_right = 1079.0
|
||||
offset_bottom = 136.0
|
||||
text = "Destroy
|
||||
"
|
||||
|
||||
[node name="CancelButton" type="Button" parent="InterfaceLayer"]
|
||||
offset_left = 1031.0
|
||||
offset_top = 145.0
|
||||
offset_right = 1091.0
|
||||
offset_bottom = 176.0
|
||||
text = "Cancel"
|
||||
|
||||
[node name="GameCam" type="Camera3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 16.504, 23.621, 15.103)
|
||||
script = ExtResource("3_7jktm")
|
||||
|
||||
[node name="PlaceManager" parent="." instance=ExtResource("2_fc0e3")]
|
||||
|
||||
[connection signal="toggled" from="InterfaceLayer/SelectToggle" to="PlaceManager" method="_on_build_toggle"]
|
||||
[connection signal="pressed" from="InterfaceLayer/BuildButton" to="PlaceManager" method="_on_build_button_pressed"]
|
||||
[connection signal="pressed" from="InterfaceLayer/DestroyButton" to="PlaceManager" method="_on_destroy_button_pressed"]
|
||||
[connection signal="pressed" from="InterfaceLayer/CancelButton" to="PlaceManager" method="_on_cancel_button_pressed"]
|
||||
26
interface/game_cam.gd
Normal file
26
interface/game_cam.gd
Normal file
@ -0,0 +1,26 @@
|
||||
extends Camera3D
|
||||
|
||||
@export var cam_max_pan_speed = 0.5
|
||||
@export var cam_max_zoom_speed = 2
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
move_camera()
|
||||
|
||||
func move_camera():
|
||||
if Input.is_action_pressed("main_cam_up"):
|
||||
position.z = position.z - cam_max_pan_speed
|
||||
|
||||
if Input.is_action_pressed("main_cam_right"):
|
||||
position.x = position.x + cam_max_pan_speed
|
||||
|
||||
if Input.is_action_pressed("main_cam_down"):
|
||||
position.z = position.z + cam_max_pan_speed
|
||||
|
||||
if Input.is_action_pressed("main_cam_left"):
|
||||
position.x = position.x - cam_max_pan_speed
|
||||
|
||||
if Input.is_action_just_released("main_cam_in"):
|
||||
fov = fov - cam_max_zoom_speed
|
||||
|
||||
if Input.is_action_just_released("main_cam_out"):
|
||||
fov = fov + cam_max_zoom_speed
|
||||
1
interface/game_cam.gd.uid
Normal file
1
interface/game_cam.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://cgfibq8ku7tey
|
||||
46
main.tscn
46
main.tscn
@ -1,46 +0,0 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://x8xo5b1b3q41"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://0d1d5e1u2fys" path="res://map/map_manager.tscn" id="1_ig7tw"]
|
||||
|
||||
[node name="Main" type="Node"]
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="SelectToggle" type="CheckButton" parent="CanvasLayer"]
|
||||
offset_left = 1008.0
|
||||
offset_top = 18.0
|
||||
offset_right = 1120.0
|
||||
offset_bottom = 49.0
|
||||
text = "Building"
|
||||
|
||||
[node name="BuildButton" type="Button" parent="CanvasLayer"]
|
||||
offset_left = 1033.0
|
||||
offset_top = 59.0
|
||||
offset_right = 1081.0
|
||||
offset_bottom = 90.0
|
||||
text = "Build"
|
||||
|
||||
[node name="DestroyButton" type="Button" parent="CanvasLayer"]
|
||||
offset_left = 1031.0
|
||||
offset_top = 105.0
|
||||
offset_right = 1079.0
|
||||
offset_bottom = 136.0
|
||||
text = "Destroy
|
||||
"
|
||||
|
||||
[node name="CancelButton" type="Button" parent="CanvasLayer"]
|
||||
offset_left = 1031.0
|
||||
offset_top = 145.0
|
||||
offset_right = 1091.0
|
||||
offset_bottom = 176.0
|
||||
text = "Cancel"
|
||||
|
||||
[node name="MapManager" parent="." instance=ExtResource("1_ig7tw")]
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 16.504, 23.621, 15.103)
|
||||
|
||||
[connection signal="toggled" from="CanvasLayer/SelectToggle" to="MapManager" method="_build_toggled"]
|
||||
[connection signal="pressed" from="CanvasLayer/BuildButton" to="MapManager" method="_on_build_button_pressed"]
|
||||
[connection signal="pressed" from="CanvasLayer/DestroyButton" to="MapManager" method="_on_destroy_button_pressed"]
|
||||
[connection signal="pressed" from="CanvasLayer/CancelButton" to="MapManager" method="_on_cancel_button_pressed"]
|
||||
@ -1,197 +0,0 @@
|
||||
extends Node3D
|
||||
|
||||
var gridsize = 32
|
||||
var astar_grid_room = AStarGrid2D.new()
|
||||
|
||||
var load_tile = preload("res://tiles/base_tile/tile.tscn")
|
||||
|
||||
var tile_dict = {}
|
||||
|
||||
var selection_drag_dict = {}
|
||||
var selection_dict = {}
|
||||
|
||||
var tile_count_x_hist = null
|
||||
var tile_count_z_hist = null
|
||||
|
||||
var build_forbidden = false
|
||||
|
||||
func _ready():
|
||||
|
||||
# Sets up a simple 2D grid of blank tiles.
|
||||
|
||||
for x in range(gridsize):
|
||||
for z in range (gridsize):
|
||||
var pos = Vector3i(x + 0.5,0 ,z + 0.5)
|
||||
|
||||
var tile = load_tile.instantiate()
|
||||
tile.set_position(pos)
|
||||
tile.type = 0
|
||||
|
||||
tile_dict[pos] = tile
|
||||
|
||||
add_child(tile)
|
||||
|
||||
|
||||
func build_selection(b):
|
||||
|
||||
if build_forbidden:
|
||||
print("No fucking building aaaaaa")
|
||||
return
|
||||
# When the build or destroy button is clicked, changes the selected tiles to match the button's request
|
||||
|
||||
for i in selection_dict:
|
||||
var tile_selected = tile_dict[i]
|
||||
tile_selected.build_this_tile(b)
|
||||
|
||||
selection_dict.clear()
|
||||
|
||||
for i in tile_dict:
|
||||
if not selection_dict.has(i):
|
||||
var tile_selected = tile_dict[i]
|
||||
tile_selected.select_this_tile(false)
|
||||
|
||||
func clear_selection():
|
||||
|
||||
# When the clear button is clicked, it clears the selected tiles without doing anything.
|
||||
|
||||
for i in tile_dict:
|
||||
var tile_selected = tile_dict[i]
|
||||
tile_selected.select_this_tile(false)
|
||||
|
||||
selection_dict.clear()
|
||||
|
||||
func end_select_drag():
|
||||
|
||||
# Locks in the dragged tiles on mouse-up
|
||||
|
||||
tile_count_x_hist = 0
|
||||
tile_count_z_hist = 0
|
||||
|
||||
selection_dict.merge(selection_drag_dict)
|
||||
|
||||
if not verify_room():
|
||||
build_forbidden = true
|
||||
|
||||
selection_drag_dict.clear()
|
||||
|
||||
func draw_tile_click(start_pos):
|
||||
|
||||
var build_start_pos: Vector3i = start_pos.snapped(Vector3i(1, 1, 1))
|
||||
tile_count_x_hist = 0
|
||||
tile_count_z_hist = 0
|
||||
|
||||
select_tile(build_start_pos)
|
||||
|
||||
func init_select_drag(float_build_start_pos, float_build_mouse_pos):
|
||||
|
||||
var select_drag_array = []
|
||||
|
||||
var build_start_pos: Vector3i = float_build_start_pos.snapped(Vector3i(1.0, 1.0, 1.0))
|
||||
var build_mouse_pos: Vector3i = float_build_mouse_pos.snapped(Vector3i(1.0, 1.0, 1.0))
|
||||
|
||||
var tile_count_x = build_mouse_pos.x - build_start_pos.x
|
||||
var tile_count_z = build_mouse_pos.z - build_start_pos.z
|
||||
|
||||
if not tile_count_x_hist == tile_count_x or not tile_count_z_hist == tile_count_z:
|
||||
|
||||
tile_count_x_hist = tile_count_x
|
||||
tile_count_z_hist = tile_count_z
|
||||
|
||||
for x in range(min(0, tile_count_x), max(0, tile_count_x) + 1):
|
||||
for z in range(min(0, tile_count_z), max(0, tile_count_z) + 1):
|
||||
var select_drag_pos = build_start_pos + Vector3i(x, 0, z)
|
||||
|
||||
select_drag_array.append(select_drag_pos)
|
||||
|
||||
draw_select_drag(select_drag_array)
|
||||
|
||||
func draw_select_drag(array):
|
||||
|
||||
selection_drag_dict.clear()
|
||||
|
||||
for i in tile_dict:
|
||||
if not selection_dict.has(i):
|
||||
var tile_selected = tile_dict[i]
|
||||
tile_selected.select_this_tile(false)
|
||||
|
||||
for i in array:
|
||||
var id = i
|
||||
select_tile(id)
|
||||
|
||||
func select_tile(pos):
|
||||
|
||||
if tile_dict.has(pos):
|
||||
|
||||
var tile = tile_dict[pos]
|
||||
|
||||
tile.select_this_tile(true)
|
||||
|
||||
selection_drag_dict[pos] = tile
|
||||
|
||||
func verify_room():
|
||||
|
||||
if selection_dict == selection_drag_dict:
|
||||
return true
|
||||
|
||||
var verify_array = selection_dict.keys()
|
||||
var verify_queue_array = [verify_array[0]]
|
||||
var verify_checked_array = []
|
||||
|
||||
while verify_array:
|
||||
if not verify_queue_array:
|
||||
return false
|
||||
|
||||
var verify_pos = verify_queue_array[0]
|
||||
|
||||
if selection_dict.has(Vector3i(verify_pos.x + 1, 0, verify_pos.z)):
|
||||
if not verify_checked_array.has(Vector3i(verify_pos.x + 1, 0, verify_pos.z)):
|
||||
if not verify_queue_array.has(Vector3i(verify_pos.x + 1, 0, verify_pos.z)):
|
||||
verify_queue_array.append(Vector3i(verify_pos.x + 1, 0, verify_pos.z))
|
||||
|
||||
if selection_dict.has(Vector3i(verify_pos.x - 1, 0, verify_pos.z)):
|
||||
if not verify_checked_array.has(Vector3i(verify_pos.x - 1, 0, verify_pos.z)):
|
||||
if not verify_queue_array.has(Vector3i(verify_pos.x - 1, 0, verify_pos.z)):
|
||||
verify_queue_array.append(Vector3i(verify_pos.x - 1, 0, verify_pos.z))
|
||||
|
||||
if selection_dict.has(Vector3i(verify_pos.x, 0, verify_pos.z + 1)):
|
||||
if not verify_checked_array.has(Vector3i(verify_pos.x, 0, verify_pos.z + 1)):
|
||||
if not verify_queue_array.has(Vector3i(verify_pos.x, 0, verify_pos.z + 1)):
|
||||
verify_queue_array.append(Vector3i(verify_pos.x, 0, verify_pos.z + 1))
|
||||
|
||||
if selection_dict.has(Vector3i(verify_pos.x, 0, verify_pos.z - 1)):
|
||||
if not verify_checked_array.has(Vector3i(verify_pos.x, 0, verify_pos.z - 1)):
|
||||
if not verify_queue_array.has(Vector3i(verify_pos.x, 0, verify_pos.z - 1)):
|
||||
verify_queue_array.append(Vector3i(verify_pos.x, 0, verify_pos.z - 1))
|
||||
|
||||
verify_checked_array.append(verify_pos)
|
||||
verify_queue_array.erase(verify_pos)
|
||||
verify_array.erase(verify_pos)
|
||||
|
||||
return true
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#if verify_dict.has(Vector3i(verify_pos.x + 1, 0, verify_pos.z)) && not verified.has(Vector3i(verify_pos.x + 1, 0, verify_pos.z)):
|
||||
#verified.append(verify_pos)
|
||||
#verify_pos = Vector3i(verify_pos.x + 1, 0, verify_pos.z)
|
||||
#elif verify_dict.has(Vector3i(verify_pos.x - 1, 0, verify_pos.z)):
|
||||
#verified.append(verify_pos)
|
||||
#verify_pos = Vector3i(verify_pos.x - 1, 0, verify_pos.z)
|
||||
#elif verify_dict.has(Vector3i(verify_pos.x, 0, verify_pos.z + 1)):
|
||||
#verified.append(verify_pos)
|
||||
#verify_pos = Vector3i(verify_pos.x, 0, verify_pos.z + 1)
|
||||
#elif verify_dict.has(Vector3i(verify_pos.x, 0, verify_pos.z - 1)):
|
||||
#verified.append(verify_pos)
|
||||
#verify_pos = Vector3i(verify_pos.x, 0, verify_pos.z - 1)
|
||||
#else:
|
||||
#verify_dict.erase(verify_pos)
|
||||
#if verify_dict:
|
||||
#print(verify_dict)
|
||||
#return false
|
||||
|
||||
return true
|
||||
#if selection_dict.has(Vector3i(verify_pos.x + 1, 0, verify_pos.z)) or (selection_dict.has(Vector3i(verify_pos.x - 1, 0, verify_pos.z))) or (selection_dict.has(Vector3i(verify_pos.x, 0, verify_pos.z + 1))) or (selection_dict.has(Vector3i(verify_pos.x, 0, verify_pos.z - 1))):
|
||||
#verify_dict.erase(verify_pos)
|
||||
178
places/base_place/place.gd
Normal file
178
places/base_place/place.gd
Normal file
@ -0,0 +1,178 @@
|
||||
extends Node3D
|
||||
|
||||
var tile_grid_size = 64
|
||||
var astar_grid_room = AStarGrid2D.new()
|
||||
|
||||
var load_tile = preload("res://tiles/base_tile/tile.tscn")
|
||||
|
||||
var tile_dict = {}
|
||||
|
||||
var selection_drag_dict = {}
|
||||
var selection_dict = {}
|
||||
|
||||
var tile_count_x_hist = null
|
||||
var tile_count_z_hist = null
|
||||
|
||||
var build_forbidden = false
|
||||
|
||||
func _ready():
|
||||
|
||||
# Sets up a simple 2D grid of blank tiles.
|
||||
|
||||
for x in range(tile_grid_size):
|
||||
for z in range (tile_grid_size):
|
||||
var pos = Vector3i(x + 0.5,0 ,z + 0.5)
|
||||
|
||||
var tile = load_tile.instantiate()
|
||||
tile.set_position(pos)
|
||||
tile.type = 0
|
||||
|
||||
tile_dict[pos] = tile
|
||||
|
||||
add_child(tile)
|
||||
|
||||
|
||||
func build_selection(b):
|
||||
|
||||
# When the build or destroy button is clicked, changes the selected tiles to match the button's request
|
||||
|
||||
if build_forbidden:
|
||||
print("can't build")
|
||||
return
|
||||
|
||||
for i in selection_dict:
|
||||
var tile_selected = tile_dict[i]
|
||||
tile_selected.build_this_tile(b)
|
||||
|
||||
selection_dict.clear()
|
||||
|
||||
for i in tile_dict:
|
||||
if not selection_dict.has(i):
|
||||
var tile_selected = tile_dict[i]
|
||||
tile_selected.select_this_tile(false)
|
||||
|
||||
func clear_selection():
|
||||
|
||||
# When the clear button is clicked, it clears the selected tiles without doing anything.
|
||||
|
||||
for i in tile_dict:
|
||||
var tile_selected = tile_dict[i]
|
||||
tile_selected.select_this_tile(false)
|
||||
|
||||
selection_dict.clear()
|
||||
|
||||
func end_select_drag():
|
||||
|
||||
# Adds dragged tiles to the current selection on mouse-up
|
||||
|
||||
tile_count_x_hist = 0
|
||||
tile_count_z_hist = 0
|
||||
|
||||
selection_dict.merge(selection_drag_dict)
|
||||
|
||||
if verify_room():
|
||||
build_forbidden = false
|
||||
else:
|
||||
build_forbidden = true
|
||||
|
||||
selection_drag_dict.clear()
|
||||
|
||||
func draw_tile_click(start_pos):
|
||||
|
||||
# starts a selection drag
|
||||
|
||||
var build_start_pos: Vector3i = start_pos.snapped(Vector3i(1, 1, 1))
|
||||
tile_count_x_hist = 0
|
||||
tile_count_z_hist = 0
|
||||
|
||||
if tile_dict.has(build_start_pos):
|
||||
select_tile(build_start_pos)
|
||||
|
||||
func init_select_drag(float_build_start_pos, float_build_mouse_pos):
|
||||
|
||||
# Creats an array of dragged tiles between mouse start and current position
|
||||
|
||||
var select_drag_array = []
|
||||
|
||||
var build_start_pos: Vector3i = float_build_start_pos.snapped(Vector3i(1.0, 1.0, 1.0))
|
||||
var build_mouse_pos: Vector3i = float_build_mouse_pos.snapped(Vector3i(1.0, 1.0, 1.0))
|
||||
|
||||
var tile_count_x = build_mouse_pos.x - build_start_pos.x
|
||||
var tile_count_z = build_mouse_pos.z - build_start_pos.z
|
||||
|
||||
if not tile_count_x_hist == tile_count_x or not tile_count_z_hist == tile_count_z:
|
||||
|
||||
tile_count_x_hist = tile_count_x
|
||||
tile_count_z_hist = tile_count_z
|
||||
|
||||
for x in range(min(0, tile_count_x), max(0, tile_count_x) + 1):
|
||||
for z in range(min(0, tile_count_z), max(0, tile_count_z) + 1):
|
||||
var select_drag_pos = build_start_pos + Vector3i(x, 0, z)
|
||||
if tile_dict.has(select_drag_pos):
|
||||
select_drag_array.append(select_drag_pos)
|
||||
|
||||
if select_drag_array:
|
||||
draw_select_drag(select_drag_array)
|
||||
|
||||
func draw_select_drag(array):
|
||||
|
||||
# Clears previous drag, then calls tile selection on all currently dragged tiles
|
||||
|
||||
selection_drag_dict.clear()
|
||||
|
||||
for i in tile_dict:
|
||||
if not selection_dict.has(i):
|
||||
var tile_selected = tile_dict[i]
|
||||
tile_selected.select_this_tile(false)
|
||||
|
||||
for i in array:
|
||||
var id = i
|
||||
select_tile(id)
|
||||
|
||||
func select_tile(pos):
|
||||
|
||||
# Tells tiles to be selected
|
||||
|
||||
var tile = tile_dict[pos]
|
||||
tile.select_this_tile(true)
|
||||
selection_drag_dict[pos] = tile
|
||||
|
||||
func verify_room():
|
||||
|
||||
# Verifies that a given selection is fully contiguous
|
||||
|
||||
if selection_dict == selection_drag_dict:
|
||||
return true
|
||||
|
||||
var verify_array = selection_dict.keys()
|
||||
var verify_queue_array = [verify_array[0]]
|
||||
var verify_checked_array = []
|
||||
|
||||
while verify_array:
|
||||
if not verify_queue_array:
|
||||
print("no good")
|
||||
return false
|
||||
|
||||
var verify_pos = verify_queue_array.pop_back()
|
||||
|
||||
var verify_neighbor_array = [
|
||||
Vector3i(verify_pos.x + 1, 0, verify_pos.z),
|
||||
Vector3i(verify_pos.x - 1, 0, verify_pos.z),
|
||||
Vector3i(verify_pos.x, 0, verify_pos.z + 1),
|
||||
Vector3i(verify_pos.x, 0, verify_pos.z - 1)
|
||||
]
|
||||
|
||||
|
||||
for n in verify_neighbor_array:
|
||||
|
||||
if selection_dict.has(n):
|
||||
if not verify_checked_array.has(n):
|
||||
if not verify_queue_array.has(n):
|
||||
verify_queue_array.append(n)
|
||||
|
||||
verify_checked_array.append(verify_pos)
|
||||
|
||||
verify_array.erase(verify_pos)
|
||||
|
||||
print("all good")
|
||||
return true
|
||||
@ -1,9 +1,9 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://bujuwgn3y42ek"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://n4vvqmlmq5fp" path="res://map/base_map/grid.gd" id="1_2j6sh"]
|
||||
[ext_resource type="Script" uid="uid://n4vvqmlmq5fp" path="res://places/base_place/place.gd" id="1_5eudc"]
|
||||
|
||||
[node name="TestWorld" type="Node3D"]
|
||||
script = ExtResource("1_2j6sh")
|
||||
[node name="TestPlace" type="Node3D"]
|
||||
script = ExtResource("1_5eudc")
|
||||
|
||||
[node name="Grid" type="Node3D" parent="."]
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
extends Node3D
|
||||
|
||||
var load_map = preload("res://map/base_map/test_map.tscn")
|
||||
var map = load_map.instantiate()
|
||||
var load_place = preload("res://places/base_place/test_place.tscn")
|
||||
var place = load_place.instantiate()
|
||||
|
||||
var build_enabled = false
|
||||
var is_building = false
|
||||
@ -9,42 +9,42 @@ var is_building = false
|
||||
var build_start_pos = null
|
||||
|
||||
func _ready():
|
||||
add_child(map)
|
||||
add_child(place)
|
||||
|
||||
func _input(event):
|
||||
pass
|
||||
|
||||
func _build_toggled(toggled_on):
|
||||
func _on_build_toggle(toggled_on):
|
||||
build_enabled = toggled_on
|
||||
|
||||
func toggle_building(event):
|
||||
is_building = event.button_mask
|
||||
|
||||
func _on_area_3d_input_event(_camera, event, event_position, _normal, _shade_id):
|
||||
|
||||
# Checks input events from the mouse plane
|
||||
|
||||
if event.is_action_pressed("select") && build_enabled:
|
||||
build_start_pos = event_position
|
||||
toggle_building(event)
|
||||
map.draw_tile_click(build_start_pos)
|
||||
place.draw_tile_click(build_start_pos)
|
||||
|
||||
if is_building:
|
||||
if event.button_mask:
|
||||
var build_mouse_pos = event_position
|
||||
map.init_select_drag(build_start_pos, build_mouse_pos)
|
||||
place.init_select_drag(build_start_pos, build_mouse_pos)
|
||||
|
||||
if not event.button_mask:
|
||||
toggle_building(event)
|
||||
map.end_select_drag()
|
||||
|
||||
pass
|
||||
|
||||
place.end_select_drag()
|
||||
|
||||
func _on_cancel_button_pressed() -> void:
|
||||
map.clear_selection()
|
||||
place.clear_selection()
|
||||
|
||||
|
||||
func _on_build_button_pressed() -> void:
|
||||
map.build_selection(true)
|
||||
place.build_selection(true)
|
||||
|
||||
|
||||
func _on_destroy_button_pressed() -> void:
|
||||
map.build_selection(false)
|
||||
place.build_selection(false)
|
||||
@ -1,22 +1,22 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://0d1d5e1u2fys"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://d24sr2dat4lj0" path="res://map/map_manager.gd" id="1_rcbs8"]
|
||||
[ext_resource type="Script" uid="uid://d24sr2dat4lj0" path="res://places/place_manager.gd" id="1_rcbs8"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_rcbs8"]
|
||||
size = Vector3(256, 0, 256)
|
||||
|
||||
[sub_resource type="PrismMesh" id="PrismMesh_rcbs8"]
|
||||
|
||||
[node name="MapManager" type="Node3D"]
|
||||
[node name="PlaceManager" type="Node3D"]
|
||||
script = ExtResource("1_rcbs8")
|
||||
|
||||
[node name="Area3D" type="Area3D" parent="."]
|
||||
[node name="FloorPlane" type="Area3D" parent="."]
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"]
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="FloorPlane"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 128, 0, 128)
|
||||
shape = SubResource("BoxShape3D_rcbs8")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="Area3D"]
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="FloorPlane"]
|
||||
mesh = SubResource("PrismMesh_rcbs8")
|
||||
|
||||
[connection signal="input_event" from="Area3D" to="." method="_on_area_3d_input_event"]
|
||||
[connection signal="input_event" from="FloorPlane" to="." method="_on_area_3d_input_event"]
|
||||
@ -22,6 +22,36 @@ select={
|
||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
main_cam_up={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":79,"key_label":0,"unicode":111,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
main_cam_right={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
main_cam_down={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
main_cam_left={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":73,"key_label":0,"unicode":105,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
main_cam_in={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":4,"canceled":false,"pressed":false,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
main_cam_out={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":5,"canceled":false,"pressed":false,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[physics]
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user