aboutsummaryrefslogtreecommitdiff
path: root/client/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'client/scripts')
-rw-r--r--client/scripts/controllable_player.gd7
-rw-r--r--client/scripts/game.gd12
-rw-r--r--client/scripts/item.gd11
-rw-r--r--client/scripts/progress.gd7
-rw-r--r--client/scripts/tiles/floor.gd8
5 files changed, 40 insertions, 5 deletions
diff --git a/client/scripts/controllable_player.gd b/client/scripts/controllable_player.gd
index debb86dd..dce81d06 100644
--- a/client/scripts/controllable_player.gd
+++ b/client/scripts/controllable_player.gd
@@ -74,15 +74,14 @@ func interact():
int(floor(position.z + cos(rotation.y)))
)
var tile_idx = str(target)
+ var t: Floor = game.map.tile_by_pos.get(tile_idx)
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]
+ if t != null:
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]
+ if t != null:
game.marker.visible = true
game.marker_target = t.item_base.global_position
else:
diff --git a/client/scripts/game.gd b/client/scripts/game.gd
index 44875056..5d127e78 100644
--- a/client/scripts/game.gd
+++ b/client/scripts/game.gd
@@ -38,7 +38,7 @@ func _ready():
players.erase(id)
player.queue_free()
)
-
+
Multiplayer.connect("set_tile_item", func(tile: Vector2i, item: int):
var t: Floor = map.tile_by_pos[str(tile)]
var i = Item.new(item, t.item_base)
@@ -77,6 +77,16 @@ func _ready():
p.put_item(t)
)
+ Multiplayer.connect("set_progress", func(tile: Vector2i, progress: float, warn: bool):
+ var t: FullTile = map.tile_by_pos[str(tile)]
+ t.progress(progress, warn)
+ )
+
+ Multiplayer.connect("set_finished", func(tile: Vector2i, warn: bool):
+ var t: FullTile = map.tile_by_pos[str(tile)]
+ t.finish(warn)
+ )
+
Multiplayer.send_join("Blub", 1)
diff --git a/client/scripts/item.gd b/client/scripts/item.gd
index c3fba434..5c73db9f 100644
--- a/client/scripts/item.gd
+++ b/client/scripts/item.gd
@@ -3,7 +3,12 @@ extends Node3D
var owned_by: Node3D
+var progress_instance: ProgressBar3D = preload("res://scenes/progress.tscn").instantiate()
+
func _init(idx: int, owned_by_: Node3D):
+ progress_instance.position.y = 2.
+ add_child(progress_instance)
+ progress_instance.visible = false
match Multiplayer.item_names[idx]:
var t:
add_child(load("res://models/prefabs/map/bag.tscn").instantiate())
@@ -28,3 +33,9 @@ func _ready():
func _process(delta):
position = lerp(position, owned_by.global_position, delta * 30.0)
+func progress(p: float, warn: bool):
+ progress_instance.visible = true
+ progress_instance.set_progress(p, warn)
+
+func finish(warn: bool):
+ progress_instance.visible = false
diff --git a/client/scripts/progress.gd b/client/scripts/progress.gd
new file mode 100644
index 00000000..22a2392f
--- /dev/null
+++ b/client/scripts/progress.gd
@@ -0,0 +1,7 @@
+class_name ProgressBar3D
+extends MeshInstance3D
+
+func set_progress(progress: float, bad: bool):
+ var mat: ShaderMaterial = self.get_active_material(0)
+ mat.set_shader_parameter("progress", progress)
+ mat.set_shader_parameter("bad", bad)
diff --git a/client/scripts/tiles/floor.gd b/client/scripts/tiles/floor.gd
index 0c4af8a0..380f3d6d 100644
--- a/client/scripts/tiles/floor.gd
+++ b/client/scripts/tiles/floor.gd
@@ -41,6 +41,14 @@ static func interact_target() -> Vector3:
func interact():
pass
+func progress(p: float, warn: bool):
+ if item != null:
+ item.progress(p, warn)
+
+func finish(warn: bool):
+ if item != null:
+ item.finish(warn)
+
func put_item(i: Item):
if item != null:
push_error("already holding an item")