diff options
author | metamuffin <metamuffin@disroot.org> | 2024-06-27 17:53:01 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-06-27 17:53:01 +0200 |
commit | b6713492c6f571ba9897532f129924f438909a07 (patch) | |
tree | 44561d18026ba0bb5ca7a357a6bb007b0637f44e /client | |
parent | 5b34f8a894e4214df9efd6d5911b8be2d1c4a8be (diff) | |
download | hurrycurry-b6713492c6f571ba9897532f129924f438909a07.tar hurrycurry-b6713492c6f571ba9897532f129924f438909a07.tar.bz2 hurrycurry-b6713492c6f571ba9897532f129924f438909a07.tar.zst |
fade to black while baking
Diffstat (limited to 'client')
-rw-r--r-- | client/game.gd | 37 | ||||
-rw-r--r-- | client/game.tscn | 1 | ||||
-rw-r--r-- | client/map/map.gd | 7 | ||||
-rw-r--r-- | client/menu/menu_manager.tscn | 1 | ||||
-rw-r--r-- | client/menu/scene_transition.gd | 23 | ||||
-rw-r--r-- | client/multiplayer.gd | 4 |
6 files changed, 47 insertions, 26 deletions
diff --git a/client/game.gd b/client/game.gd index b36b40a0..756ff978 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 @@ -58,13 +56,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 @@ -83,7 +81,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] @@ -166,18 +164,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) diff --git a/client/game.tscn b/client/game.tscn index ff6b8da5..7c90d833 100644 --- a/client/game.tscn +++ b/client/game.tscn @@ -44,5 +44,6 @@ visible = false [node name="SceneTransition" parent="." instance=ExtResource("5_yg6cl")] ingame = true +auto_fade_in = false [node name="Map" parent="." instance=ExtResource("6_prg6t")] diff --git a/client/map/map.gd b/client/map/map.gd index 32b267d7..7e09e969 100644 --- a/client/map/map.gd +++ b/client/map/map.gd @@ -2,7 +2,7 @@ class_name Map extends Node3D var tile_by_pos: Dictionary = {} -var baking = false +var autobake = false func get_tile_name(pos: Vector2i): var e = tile_by_pos.get(str(pos)) @@ -18,10 +18,10 @@ func set_tile(pos: Vector2i, name_: String, neighbors: Array = [null,null,null,n add_child(tile) tile.position = Vector3(pos.x, 0, pos.y) tile_by_pos[str(pos)] = [pos, name_, tile, neighbors] - if not baking: voxelgi_timer.start(1) + if autobake: voxelgi_timer.start(1) return tile -func remove_tile_if_exists(pos: Vector2i): +func clear_tile(pos: Vector2i): var tile = get_tile_instance(pos) if tile == null: return if tile.item != null: tile.item.queue_free() @@ -33,7 +33,6 @@ func remove_tile_if_exists(pos: Vector2i): @onready var voxelgi: VoxelGI = $VoxelGI func _ready(): - if baking: return voxelgi_timer.connect("timeout", gi_bake) func gi_bake(): diff --git a/client/menu/menu_manager.tscn b/client/menu/menu_manager.tscn index 18e13282..56cc6442 100644 --- a/client/menu/menu_manager.tscn +++ b/client/menu/menu_manager.tscn @@ -32,4 +32,3 @@ layout_mode = 1 [node name="SceneTransition" parent="." instance=ExtResource("6_p4u45")] visible = false layout_mode = 1 -auto_fade_in = false diff --git a/client/menu/scene_transition.gd b/client/menu/scene_transition.gd index 30c7e1df..66b6c4e4 100644 --- a/client/menu/scene_transition.gd +++ b/client/menu/scene_transition.gd @@ -16,20 +16,29 @@ class_name SceneTransition extends ColorRect -@onready var anim = $animation +@onready var anim: AnimationPlayer = $animation @export var ingame = false @export var auto_fade_in := true +var black = true +var fading = false + func _ready(): - if auto_fade_in: - fade_in() - else: - visible = false + visible = true + if auto_fade_in: fade_in() func fade_in(): - visible = true - anim.play("fade_in") + if black: anim.play("fade_in"); fading = true + black = false + if fading: await anim.animation_finished + fading = false + +func fade_out(): + if not black: anim.play("fade_out"); fading = true + black = true + if fading: await anim.animation_finished + fading = false func transition_to(path: String): await out() diff --git a/client/multiplayer.gd b/client/multiplayer.gd index 0d9697e8..ecb987d6 100644 --- a/client/multiplayer.gd +++ b/client/multiplayer.gd @@ -41,6 +41,7 @@ signal set_player_item(player: int, item: int) signal remove_player_item(player: int) signal set_progress(tile: Vector2i, progress: float, warn: bool) signal set_finished(tile: Vector2i, warn: bool) +signal set_ingame(state: bool) signal connection_closed(reason: String) @@ -164,6 +165,9 @@ func handle_packet(bytes: PackedByteArray): push_error("neither text nor item provided") else: emit_signal("clear_message", player) + "set_ingame": + var state = decoded["state"] + emit_signal("set_ingame", state) "error": var message = decoded["message"] push_warning("server error: %s" % message) |