diff options
-rw-r--r-- | client/project.godot | 5 | ||||
-rw-r--r-- | client/scripts/controllable_player.gd | 11 | ||||
-rw-r--r-- | client/scripts/game.gd | 3 | ||||
-rw-r--r-- | client/scripts/multiplayer.gd | 2 |
4 files changed, 17 insertions, 4 deletions
diff --git a/client/project.godot b/client/project.godot index 610efe44..09247046 100644 --- a/client/project.godot +++ b/client/project.godot @@ -61,6 +61,11 @@ rotate_down={ "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":4194322,"key_label":0,"unicode":0,"echo":false,"script":null) ] } +interact={ +"deadzone": 0.5, +"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":32,"key_label":0,"unicode":32,"echo":false,"script":null) +] +} [rendering] diff --git a/client/scripts/controllable_player.gd b/client/scripts/controllable_player.gd index d0852846..debb86dd 100644 --- a/client/scripts/controllable_player.gd +++ b/client/scripts/controllable_player.gd @@ -23,7 +23,7 @@ func _process(delta): update(delta, input) position_anim = position_ rotation_anim = rotation_ - mark_interact_target() + interact() super(delta) func update(dt: float, input: Vector2): @@ -68,12 +68,19 @@ func aabb_point_distance(min: Vector2, max: Vector2, p: Vector2) -> float: func update_position(_new_position: Vector2, _new_rotation: float): pass -func mark_interact_target(): +func interact(): var target = Vector2i( int(floor(position.x + sin(rotation.y))), int(floor(position.z + cos(rotation.y))) ) var tile_idx = str(target) + if Input.is_action_just_pressed("interact"): + Multiplayer.send_interact(target, true) + if game.map.tile_by_pos.has(tile_idx): + var t: Floor = game.map.tile_by_pos[tile_idx] + t.interact() + elif Input.is_action_just_released("interact"): + Multiplayer.send_interact(target, false) if game.map.tile_by_pos.has(tile_idx): var t: Floor = game.map.tile_by_pos[tile_idx] game.marker.visible = true diff --git a/client/scripts/game.gd b/client/scripts/game.gd index f363c894..86277b3f 100644 --- a/client/scripts/game.gd +++ b/client/scripts/game.gd @@ -31,8 +31,9 @@ func _ready(): ) Multiplayer.connect("remove_player", func(id: int): - var player = players.get(id) + var player: Player = players.get(id) if player != null: + player.hand.queue_free() players.erase(id) player.queue_free() ) diff --git a/client/scripts/multiplayer.gd b/client/scripts/multiplayer.gd index 4e05fad5..7032b216 100644 --- a/client/scripts/multiplayer.gd +++ b/client/scripts/multiplayer.gd @@ -137,7 +137,7 @@ func send_position(pos: Vector2, rotation: float): "rot": rotation }) -func send_interact(pos: Vector2, edge: bool): +func send_interact(pos: Vector2i, edge: bool): send_packet({ "type": "interact", "pos": [pos.x, pos.y], |