aboutsummaryrefslogtreecommitdiff
path: root/client/game.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/game.gd')
-rw-r--r--client/game.gd37
1 files changed, 23 insertions, 14 deletions
diff --git a/client/game.gd b/client/game.gd
index 68016d82..abb04bc6 100644
--- a/client/game.gd
+++ b/client/game.gd
@@ -21,22 +21,20 @@ extends Node3D
@onready var mp: Multiplayer = $Multiplayer
@onready var map: Map = $Map
@onready var marker: Marker = $Marker
-
-var marker_target = Vector3(0,0,0)
+@onready var environment = $WorldEnvironment
+@onready var transition: SceneTransition = $SceneTransition
var player_id: int = -1
var item_names: Array = []
+var item_index_by_name: Dictionary = {}
var tile_names: Array = []
-var tile_id_by_name: Dictionary = {}
+var tile_index_by_name: Dictionary = {}
var tile_collide: Array = []
var tile_interact: Array = []
-var item_idx_from_name: Dictionary = {}
-
+var marker_target = Vector3(0,0,0)
var players := {}
-@onready var environment = $WorldEnvironment
-
func _ready():
if !Global.on_vulkan():
environment.environment.tonemap_exposure = 0.5
@@ -60,13 +58,13 @@ func _ready():
tile_names = tile_names_
tile_collide = tile_collide_
tile_interact = tile_interact_
- tile_id_by_name = {}
+ tile_index_by_name = {}
for id in tile_names.size():
- tile_id_by_name[tile_names[id]] = id
+ tile_index_by_name[tile_names[id]] = id
- item_idx_from_name.clear()
+ item_index_by_name.clear()
for i in range(item_names.size()):
- item_idx_from_name[item_names[i]] = i
+ item_index_by_name[item_names[i]] = i
)
await mp.init
@@ -85,7 +83,7 @@ func _ready():
)
mp.set_tile.connect(set_tile)
- mp.remove_tile.connect(set_tile)
+ mp.remove_tile.connect(func (pos): map.clear_tile(pos))
mp.position.connect(func(player: int, pos: Vector2, rot: float):
var player_instance: Player = players[player]
@@ -168,18 +166,29 @@ func _ready():
mp.send_join(Global.profile["username"], Global.profile["character"])
+ mp.set_ingame.connect(func (state):
+ if state:
+ await transition.fade_out()
+ map.gi_bake()
+ await transition.fade_in()
+ map.autobake = true
+ else:
+ map.autobake = false
+ await transition.fade_out()
+ )
+
func _process(delta):
marker.position = lerp(marker.position, marker_target, delta * 40.0)
func get_tile_collision(pos: Vector2i) -> bool:
var t = map.get_tile_name(pos)
if t == null: return true
- else: return tile_collide[tile_id_by_name[t]]
+ else: return tile_collide[tile_index_by_name[t]]
func get_tile_interactive(pos: Vector2i) -> bool:
var t = map.get_tile_name(pos)
if t == null: return false
- else: return tile_interact[tile_id_by_name[t]]
+ else: return tile_interact[tile_index_by_name[t]]
func set_tile(tile: Vector2i, kind = null, neighbors = null):
if neighbors != null: neighbors = neighbors.map(func (x): return tile_names[x] if x != null else null)