Skip to content

Commit

Permalink
Split out different tool functions better.
Browse files Browse the repository at this point in the history
  • Loading branch information
chrisl8 committed Mar 24, 2024
1 parent 50546fd commit 71b36df
Show file tree
Hide file tree
Showing 5 changed files with 210 additions and 110 deletions.
2 changes: 2 additions & 0 deletions global_variables.gd
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
extends Node

enum Tools { MINE, BUILD, PICKUP, DRAG }

var server_config: Dictionary = {}
var server_player_save_data_file_name: String = "user://server_player_data.dat"
var player_save_data: Dictionary = {}
Expand Down
55 changes: 27 additions & 28 deletions player/player.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ properties/4/replication_mode = 1
properties/5/path = NodePath("Interaction Controller:mouse_position")
properties/5/spawn = true
properties/5/replication_mode = 2
properties/6/path = NodePath("Interaction Controller:is_mining")
properties/6/path = NodePath("Interaction Controller:left_hand_tool_is_active")
properties/6/spawn = true
properties/6/replication_mode = 2
properties/7/path = NodePath("Interaction Controller:mining_distance")
Expand All @@ -46,6 +46,9 @@ properties/7/replication_mode = 2
properties/8/path = NodePath("Interaction Controller:flipped")
properties/8/spawn = true
properties/8/replication_mode = 2
properties/9/path = NodePath("Interaction Controller:left_hand_tool")
properties/9/spawn = true
properties/9/replication_mode = 2

[sub_resource type="Curve" id="Curve_tmffk"]
_data = [Vector2(0.455729, 0.856713), 0.0, 0.0, 0, 0, Vector2(0.669271, 0.0490983), 0.0, 0.0, 0, 0]
Expand Down Expand Up @@ -90,7 +93,7 @@ turbulence_enabled = true
[sub_resource type="RectangleShape2D" id="RectangleShape2D_6r2ad"]
size = Vector2(75, 86)

[node name="Player" type="RigidBody2D" node_paths=PackedStringArray("camera", "interaction_controller", "inventory_manager", "player_canvas") groups=["players"]]
[node name="Player" type="RigidBody2D" node_paths=PackedStringArray("camera") groups=["players"]]
collision_layer = 2
collision_mask = 11
mass = 200.0
Expand All @@ -99,16 +102,16 @@ can_sleep = false
lock_rotation = true
freeze_mode = 1
continuous_cd = 1
max_contacts_reported = 5
contact_monitor = true
max_contacts_reported = 5
linear_damp = 0.1
angular_damp = 0.5
script = ExtResource("1_ntq5g")
player = null
player_spawn_point = Vector2(0, 0)
synced_position = null
synced_rotation = null
camera = NodePath("Camera2D")
interaction_controller = NodePath("Interaction Controller")
inventory_manager = NodePath("Inventory Manager")
player_canvas = NodePath("CanvasLayer")
metadata/_edit_horizontal_guides_ = [-66.0, -74.0]

[node name="PlayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
Expand All @@ -131,12 +134,12 @@ antenna = NodePath("../Flip Point/Antenna")

[node name="Inventory Manager" type="Node2D" parent="." node_paths=PackedStringArray("stone_bar", "red_ore_bar")]
script = ExtResource("5_xpvfg")
stone_bar = NodePath("../CanvasLayer/Control/Stone")
red_ore_bar = NodePath("../CanvasLayer/Control/Red ore")
stone_bar = NodePath("../Player Canvas/Control/Stone")
red_ore_bar = NodePath("../Player Canvas/Control/Red ore")

[node name="CanvasLayer" type="CanvasLayer" parent="."]
[node name="Player Canvas" type="CanvasLayer" parent="."]

[node name="Control" type="Control" parent="CanvasLayer"]
[node name="Control" type="Control" parent="Player Canvas"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
Expand All @@ -146,7 +149,7 @@ grow_vertical = 2
size_flags_horizontal = 0
size_flags_vertical = 4

[node name="Prompt" type="Label" parent="CanvasLayer/Control"]
[node name="Prompt" type="Label" parent="Player Canvas/Control"]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
Expand All @@ -155,10 +158,9 @@ offset_left = -20.0
offset_right = 20.0
offset_bottom = 23.0
grow_horizontal = 2
text = "Prompts"
script = ExtResource("4_8hopg")

[node name="Label" type="Label" parent="CanvasLayer/Control"]
[node name="Label" type="Label" parent="Player Canvas/Control"]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
Expand All @@ -170,7 +172,7 @@ grow_horizontal = 0
scale = Vector2(2, 2)
text = "Resources"

[node name="Red Ore Background" type="Control" parent="CanvasLayer/Control"]
[node name="Red Ore Background" type="Control" parent="Player Canvas/Control"]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
Expand All @@ -182,14 +184,14 @@ offset_bottom = 214.0
grow_horizontal = 0
scale = Vector2(2, 10)

[node name="ColorRect" type="ColorRect" parent="CanvasLayer/Control/Red Ore Background"]
[node name="ColorRect" type="ColorRect" parent="Player Canvas/Control/Red Ore Background"]
layout_mode = 0
offset_left = -5.0
offset_top = -10.0
offset_right = 5.0
color = Color(0.752941, 0.752941, 0.752941, 1)

[node name="Red ore" type="Control" parent="CanvasLayer/Control"]
[node name="Red ore" type="Control" parent="Player Canvas/Control"]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
Expand All @@ -201,14 +203,14 @@ offset_bottom = 214.0
grow_horizontal = 0
scale = Vector2(2, 10)

[node name="ColorRect" type="ColorRect" parent="CanvasLayer/Control/Red ore"]
[node name="ColorRect" type="ColorRect" parent="Player Canvas/Control/Red ore"]
layout_mode = 0
offset_left = -5.0
offset_top = -10.0
offset_right = 5.0
color = Color(0.478431, 0.196078, 0.196078, 1)

[node name="Stone background" type="Control" parent="CanvasLayer/Control"]
[node name="Stone background" type="Control" parent="Player Canvas/Control"]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
Expand All @@ -220,14 +222,14 @@ offset_bottom = 214.0
grow_horizontal = 0
scale = Vector2(2, 10)

[node name="ColorRect" type="ColorRect" parent="CanvasLayer/Control/Stone background"]
[node name="ColorRect" type="ColorRect" parent="Player Canvas/Control/Stone background"]
layout_mode = 0
offset_left = -5.0
offset_top = -10.0
offset_right = 5.0
color = Color(0.752941, 0.752941, 0.752941, 1)

[node name="Stone" type="Control" parent="CanvasLayer/Control"]
[node name="Stone" type="Control" parent="Player Canvas/Control"]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
Expand All @@ -239,37 +241,34 @@ offset_bottom = 214.0
grow_horizontal = 0
scale = Vector2(2, 10)

[node name="ColorRect" type="ColorRect" parent="CanvasLayer/Control/Stone"]
[node name="ColorRect" type="ColorRect" parent="Player Canvas/Control/Stone"]
layout_mode = 0
offset_left = -5.0
offset_top = -10.0
offset_right = 5.0
color = Color(0.431373, 0.431373, 0.431373, 1)

[node name="Tools" type="Control" parent="CanvasLayer"]
[node name="Tools" type="Control" parent="Player Canvas"]
layout_mode = 3
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0

[node name="Title" type="Label" parent="CanvasLayer/Tools"]
[node name="Title" type="Label" parent="Player Canvas/Tools"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 23.0
text = "Tools
"

[node name="Current" type="Label" parent="CanvasLayer/Tools"]
[node name="Current" type="Label" parent="Player Canvas/Tools"]
layout_mode = 0
offset_left = -1.0
offset_top = 27.0
offset_right = 135.0
offset_bottom = 76.0
text = "Left: Mine
Right: Place Block
"

[node name="Options" type="Label" parent="CanvasLayer/Tools"]
[node name="Options" type="Label" parent="Player Canvas/Tools"]
layout_mode = 0
offset_top = 88.0
offset_right = 77.0
Expand Down
46 changes: 33 additions & 13 deletions player/player_controller.gd
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@ extends RigidBody2D
synced_rotation = new_value
update_synced_rotation = !player == multiplayer.get_unique_id()
@export var camera: Node
@export var interaction_controller: Node2D
@export var inventory_manager: Node2D
@export var player_canvas: CanvasLayer

var update_synced_position: bool = false
var update_synced_rotation: bool = false
Expand All @@ -36,8 +33,17 @@ func _ready() -> void:
space, PhysicsServer2D.SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION, 0.0
)

interaction_controller.initialize(player == multiplayer.get_unique_id())
inventory_manager.initialize(player == multiplayer.get_unique_id())
Helpers.log_print(
str(
"player_controller ready_: player == multiplayer.get_unique_id(): ",
player == multiplayer.get_unique_id()
)
)
$"Interaction Controller".initialize(player == multiplayer.get_unique_id())
$"Inventory Manager".initialize(player == multiplayer.get_unique_id())
$"Player Canvas/Control/Prompt".initialize(
player == multiplayer.get_unique_id()
)

set_process(player == multiplayer.get_unique_id())
set_physics_process(player == multiplayer.get_unique_id())
Expand All @@ -49,7 +55,7 @@ func _ready() -> void:
camera.queue_free()
gravity_scale = 0.0

player_canvas.visible = !Globals.is_server
$"Player Canvas".visible = !Globals.is_server


## Remotely force the player to a given position
Expand All @@ -66,11 +72,17 @@ func _physics_process(delta: float) -> void:
if (
(
abs(position.x)
> Globals.world_map.max_radius_in_tiles * Globals.world_map.single_tile_width
> (
Globals.world_map.max_radius_in_tiles
* Globals.world_map.single_tile_width
)
)
or (
abs(position.y)
> Globals.world_map.max_radius_in_tiles * Globals.world_map.single_tile_width
> (
Globals.world_map.max_radius_in_tiles
* Globals.world_map.single_tile_width
)
)
):
Network.reset_connection()
Expand All @@ -87,10 +99,14 @@ func _physics_process(delta: float) -> void:
var damp: float = 5000.0
var dampening: float = velocity.x
if velocity.x < 0.0:
dampening = velocity.x - (damp * delta) * (velocity.x / abs(velocity.x))
dampening = (
velocity.x - (damp * delta) * (velocity.x / abs(velocity.x))
)
dampening = clamp(dampening, velocity.x, 0.0)
elif velocity.x > 0:
dampening = velocity.x - (damp * delta) * (velocity.x / abs(velocity.x))
dampening = (
velocity.x - (damp * delta) * (velocity.x / abs(velocity.x))
)
dampening = clamp(dampening, 0.0, velocity.x)

velocity = Vector2(dampening, velocity.y)
Expand Down Expand Up @@ -124,7 +140,9 @@ func _integrate_forces(state: PhysicsDirectBodyState2D) -> void:
if update_synced_position and update_synced_rotation:
state.transform = Transform2D(synced_rotation, synced_position)
elif update_synced_position:
state.transform = Transform2D(state.transform.get_rotation(), synced_position)
state.transform = Transform2D(
state.transform.get_rotation(), synced_position
)
elif update_synced_rotation:
state.transform = Transform2D(synced_rotation, state.origin)
update_synced_position = false
Expand All @@ -134,13 +152,15 @@ func _integrate_forces(state: PhysicsDirectBodyState2D) -> void:
@rpc("any_peer", "call_remote", "reliable")
func add_inventory_data(data: Dictionary) -> void:
if player == multiplayer.get_unique_id():
inventory_manager.add_data(data)
$"Inventory Manager".add_data(data)


func spawn_item() -> void:
var rng: RandomNumberGenerator = RandomNumberGenerator.new()
var id: int = rng.randi()
var thing_name_to_spawn: String = str(player_spawnable_items[player_spawn_item_next], "-", id)
var thing_name_to_spawn: String = str(
player_spawnable_items[player_spawn_item_next], "-", id
)
$"Interaction Controller".spawn_player_controlled_thing.rpc(
Vector2.ZERO, 0, thing_name_to_spawn, "Placing"
)
Expand Down
Loading

0 comments on commit 71b36df

Please sign in to comment.