default maps and fixes

This commit is contained in:
James 2023-12-05 19:04:21 +00:00
parent 13c1bf8350
commit d83bd7ce17
8 changed files with 5808 additions and 30 deletions

View File

@ -20,8 +20,8 @@ func _on_about_to_popup():
func _on_confirmed(): func _on_confirmed():
# Get the Map node # Get the Map node
var sim = get_node("../../../Sim") var sim = get_tree().root.get_node("Sim")
var old_map = get_node("../../Map") var old_map = get_tree().root.get_node("Sim/Map")
# Load and instance the selected item # Load and instance the selected item
for item in $ItemList.get_selected_items(): for item in $ItemList.get_selected_items():
@ -29,7 +29,7 @@ func _on_confirmed():
var res = ResourceLoader.load("user://saves/" + $ItemList.get_item_text(item)) var res = ResourceLoader.load("user://saves/" + $ItemList.get_item_text(item))
if res and res is PackedScene: if res and res is PackedScene:
var instance = res.instantiate() var instance = res.instantiate()
sim.remove_child(old_map) sim.remove_child(old_map)
sim.add_child(instance) sim.add_child(instance)
else: else:

27
Map.gd
View File

@ -1,27 +1,30 @@
extends Node2D extends Node2D
var spawn_position=Vector2(100,100); var mouse_down_position = Vector2()
# Called when the node enters the scene tree for the first time.
func _ready():
pass
func _unhandled_input(event): func _unhandled_input(event):
if event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT: if event is InputEventMouseButton:
spawn_position=get_global_mouse_position() if event.button_index == MOUSE_BUTTON_LEFT:
spawn() if event.pressed:
# Record the position where the mouse was pressed down
mouse_down_position = get_global_mouse_position()
else:
# Handle mouse button release
var pos = get_global_mouse_position()
var vol = pos - mouse_down_position
spawn(pos,vol)
func spawn(): func spawn(pos,vol):
var new_player = load("res://player.tscn").instantiate() var new_player = load("res://player.tscn").instantiate()
new_player.get_node("Body2D").position = spawn_position new_player.get_node("Body2D").position = pos
new_player.get_node("Body2D").apply_impulse(Vector2.from_angle(randf_range(0, 2 * PI)) * 100) new_player.get_node("Body2D").apply_impulse(vol)
# Prepare the shape query parameters # Prepare the shape query parameters
var query_parameters = PhysicsShapeQueryParameters2D.new() var query_parameters = PhysicsShapeQueryParameters2D.new()
var collision_shape = new_player.get_node("Body2D/CollisionShape2D").shape var collision_shape = new_player.get_node("Body2D/CollisionShape2D").shape
query_parameters.set_shape(collision_shape) query_parameters.set_shape(collision_shape)
query_parameters.set_transform(Transform2D(0, spawn_position)) query_parameters.set_transform(Transform2D(0, pos))
query_parameters.set_collision_mask(1) query_parameters.set_collision_mask(1)
# Get the Physics2DDirectSpaceState for collision checking # Get the Physics2DDirectSpaceState for collision checking

View File

@ -46,7 +46,7 @@ func update():
self.queue_redraw() # Request to redraw the node self.queue_redraw() # Request to redraw the node
func _on_decay_timer_timeout(): func decay():
var new_player = load("res://player.tscn").instantiate() var new_player = load("res://player.tscn").instantiate()
new_player.get_node("CharacterBody2D").velocity = Vector2.from_angle(randf_range(0, 2 * PI)) * 100 new_player.get_node("CharacterBody2D").velocity = Vector2.from_angle(randf_range(0, 2 * PI)) * 100

View File

@ -5,6 +5,19 @@ var base_path = "user://saves/"
func _ready(): func _ready():
if not DirAccess.dir_exists_absolute(base_path): if not DirAccess.dir_exists_absolute(base_path):
DirAccess.make_dir_recursive_absolute(base_path) DirAccess.make_dir_recursive_absolute(base_path)
var dir = DirAccess.open("res://saves/")
if dir:
dir.list_dir_begin()
var file_name = dir.get_next()
while file_name != "":
if dir.current_is_dir():
print("skip directory: " + file_name)
else:
print("copy file: " + file_name)
DirAccess.copy_absolute("res://saves/"+file_name,"user://saves/"+file_name)
file_name = dir.get_next()
else:
print("An error occurred when trying to access the path.")
func _on_about_to_popup(): func _on_about_to_popup():
pass # Replace with function body. pass # Replace with function body.
@ -13,9 +26,16 @@ func _on_confirmed():
var filename=base_path+$LineEdit.text+".tscn" var filename=base_path+$LineEdit.text+".tscn"
print("Save: "+filename) print("Save: "+filename)
var packed_scene = PackedScene.new() var packed_scene = PackedScene.new()
set_owner_recursive($"../../Map",$"../../Map")
if packed_scene.pack($"../../Map") == OK: if packed_scene.pack($"../../Map") == OK:
var result = ResourceSaver.save(packed_scene,filename) var result = ResourceSaver.save(packed_scene,filename)
if result != OK: if result != OK:
print("Failed to save scene. Error #",result) print("Failed to save scene. Error #",result)
else: else:
print("Failed to pack scene.") print("Failed to pack scene.")
func set_owner_recursive(node: Node, new_owner: Node):
if node != new_owner:
node.owner = new_owner
for child in node.get_children():
set_owner_recursive(child, new_owner)

View File

@ -58,7 +58,7 @@ func drop():
carrying_r=0 carrying_r=0
carrying_g=0 carrying_g=0
carrying_b=0 carrying_b=0
get_tree().root.get_node("Sim").call_deferred("add_child",new_pool) get_tree().root.get_node("Sim/Map").call_deferred("add_child",new_pool)
update() update()
func doubledrop(player: Player): func doubledrop(player: Player):
@ -76,7 +76,7 @@ func doubledrop(player: Player):
player.carrying_r=0 player.carrying_r=0
player.carrying_g=0 player.carrying_g=0
player.carrying_b=0 player.carrying_b=0
get_tree().root.get_node("Sim").call_deferred("add_child",new_pool) get_tree().root.get_node("Sim/Map").call_deferred("add_child",new_pool)
update() update()
func exchange_with(pool: Pool): func exchange_with(pool: Pool):

View File

@ -21,7 +21,3 @@ shape = SubResource("CircleShape2D_fmfn8")
[node name="Icon" type="Sprite2D" parent="StaticBody2D"] [node name="Icon" type="Sprite2D" parent="StaticBody2D"]
texture = ExtResource("2_45evg") texture = ExtResource("2_45evg")
[node name="DecayTimer" type="Timer" parent="StaticBody2D"]
[connection signal="timeout" from="StaticBody2D/DecayTimer" to="." method="_on_decay_timer_timeout"]

5759
saves/default.tscn Normal file

File diff suppressed because it is too large Load Diff

View File

@ -9,12 +9,12 @@
[node name="Sim" type="Node2D"] [node name="Sim" type="Node2D"]
[node name="Camera2D" type="Camera2D" parent="."]
script = ExtResource("4_g4kw0")
[node name="Map" type="Node2D" parent="."] [node name="Map" type="Node2D" parent="."]
script = ExtResource("2_rolej") script = ExtResource("2_rolej")
[node name="Camera2D" type="Camera2D" parent="Map"]
script = ExtResource("4_g4kw0")
[node name="ScreenOverlay" type="CanvasLayer" parent="."] [node name="ScreenOverlay" type="CanvasLayer" parent="."]
[node name="HUD" type="PanelContainer" parent="ScreenOverlay"] [node name="HUD" type="PanelContainer" parent="ScreenOverlay"]
@ -30,14 +30,14 @@ layout_mode = 2
layout_mode = 2 layout_mode = 2
text = "debug" text = "debug"
[node name="Save" type="Button" parent="ScreenOverlay/HUD/HBoxContainer"]
layout_mode = 2
text = "Save..."
[node name="Load" type="Button" parent="ScreenOverlay/HUD/HBoxContainer"] [node name="Load" type="Button" parent="ScreenOverlay/HUD/HBoxContainer"]
layout_mode = 2 layout_mode = 2
text = "Load..." text = "Load..."
[node name="Save" type="Button" parent="ScreenOverlay/HUD/HBoxContainer"]
layout_mode = 2
text = "Save..."
[node name="LoadDialog" type="ConfirmationDialog" parent="ScreenOverlay"] [node name="LoadDialog" type="ConfirmationDialog" parent="ScreenOverlay"]
title = "Load" title = "Load"
position = Vector2i(0, 36) position = Vector2i(0, 36)
@ -69,8 +69,8 @@ wait_time = 60.0
autostart = true autostart = true
script = ExtResource("3_7b3mn") script = ExtResource("3_7b3mn")
[connection signal="pressed" from="ScreenOverlay/HUD/HBoxContainer/Save" to="ScreenOverlay/HUD" method="_on_save_pressed"]
[connection signal="pressed" from="ScreenOverlay/HUD/HBoxContainer/Load" to="ScreenOverlay/HUD" method="_on_load_pressed"] [connection signal="pressed" from="ScreenOverlay/HUD/HBoxContainer/Load" to="ScreenOverlay/HUD" method="_on_load_pressed"]
[connection signal="pressed" from="ScreenOverlay/HUD/HBoxContainer/Save" to="ScreenOverlay/HUD" method="_on_save_pressed"]
[connection signal="about_to_popup" from="ScreenOverlay/LoadDialog" to="ScreenOverlay/LoadDialog" method="_on_about_to_popup"] [connection signal="about_to_popup" from="ScreenOverlay/LoadDialog" to="ScreenOverlay/LoadDialog" method="_on_about_to_popup"]
[connection signal="confirmed" from="ScreenOverlay/LoadDialog" to="ScreenOverlay/LoadDialog" method="_on_confirmed"] [connection signal="confirmed" from="ScreenOverlay/LoadDialog" to="ScreenOverlay/LoadDialog" method="_on_confirmed"]
[connection signal="about_to_popup" from="ScreenOverlay/SaveDialog" to="ScreenOverlay/SaveDialog" method="_on_about_to_popup"] [connection signal="about_to_popup" from="ScreenOverlay/SaveDialog" to="ScreenOverlay/SaveDialog" method="_on_about_to_popup"]