Extensive work on animations and partially functional level keys, new UI gears but needs rounding error correction. Particle preloader added.
This commit is contained in:
@@ -19,6 +19,7 @@ var pawns : Dictionary = {
|
||||
|
||||
const blinder_template = preload("res://templates/blinder.tscn")
|
||||
const one_shot_template = preload("res://templates/one_shot.tscn")
|
||||
const level_loading_template = preload("res://scenes/vrep_loading.tscn")
|
||||
|
||||
const story_level = preload("res://scenes/manufactory.tscn")
|
||||
const vs_com_level = preload("res://scenes/test_level.tscn")
|
||||
@@ -29,6 +30,7 @@ var cmd_args : Dictionary = {}
|
||||
var player : PawnController
|
||||
var hud : HUD
|
||||
var level : Level
|
||||
var level_loading
|
||||
var mode : Modes = Modes.STORY
|
||||
var multiplayer_game : bool = false
|
||||
var num_players : int = 1
|
||||
@@ -64,6 +66,10 @@ func setup_player(pc : PawnController) -> void:
|
||||
func is_multiplayer() -> bool:
|
||||
return multiplayer_game
|
||||
|
||||
@rpc("call_local", "any_peer", "reliable")
|
||||
func show_level_loading() -> void:
|
||||
level_loading = level_loading_template.instantiate()
|
||||
add_child(level_loading)
|
||||
|
||||
func start_level(pawn_dict : Dictionary[int, StringName]) -> void:
|
||||
pawns_selected = pawn_dict
|
||||
@@ -73,31 +79,41 @@ func start_level(pawn_dict : Dictionary[int, StringName]) -> void:
|
||||
for i in Multiplayer.players.values():
|
||||
level_synced[i] = false
|
||||
level_synced[1] = true
|
||||
show_level_loading.rpc()
|
||||
match(mode):
|
||||
Modes.STORY:
|
||||
switch_scene(story_level, false)
|
||||
Modes.VS_COM:
|
||||
switch_scene(vs_com_level, false)
|
||||
Modes.VS_MAN:
|
||||
switch_scene(vs_man_level)
|
||||
switch_scene(vs_man_level, true)
|
||||
|
||||
func switch_scene(packed_scene : PackedScene, spawn : bool = true) -> void:
|
||||
func switch_scene(packed_scene : PackedScene, spawn : bool = true, is_level : bool = true) -> void:
|
||||
var blinder = blinder_template.instantiate() as TextureRect
|
||||
var tween = create_tween()
|
||||
blinder.self_modulate.a = 0
|
||||
add_child(blinder)
|
||||
tween.tween_property(blinder, "self_modulate:a", 1, .15)
|
||||
await tween.tween_property(blinder, "self_modulate:a", 1, .15).finished
|
||||
tween = create_tween()
|
||||
if spawn:
|
||||
var spawner = get_tree().get_first_node_in_group("level_spawner") as MultiplayerSpawner
|
||||
tween.tween_callback(spawner.add_child.bind(packed_scene.instantiate(), true))
|
||||
tween.tween_callback(spawner.add_child.bind(packed_scene.instantiate(), true)).finished
|
||||
var current_scene = get_tree().get_first_node_in_group("scenes")
|
||||
if current_scene:
|
||||
tween.tween_callback(current_scene.queue_free)
|
||||
current_scene.process_mode=Node.PROCESS_MODE_DISABLED
|
||||
else:
|
||||
tween.tween_callback(get_tree().change_scene_to_packed.bind(packed_scene))
|
||||
tween.tween_property(blinder, "self_modulate:a", 0, .15)
|
||||
tween.tween_callback(blinder.queue_free)
|
||||
tween.tween_callback(get_tree().change_scene_to_packed.bind(packed_scene)).finished
|
||||
if is_level:
|
||||
await tween.tween_interval(0.1).finished
|
||||
tween = create_tween()
|
||||
level.level_started.connect(level_loading.queue_free)
|
||||
tween.tween_property(blinder, "self_modulate:a", 0, .15)
|
||||
tween.tween_callback(blinder.queue_free)
|
||||
else:
|
||||
tween.tween_property(blinder, "self_modulate:a", 0, .15)
|
||||
tween.tween_callback(blinder.queue_free)
|
||||
|
||||
|
||||
@rpc("call_local", "any_peer", "reliable")
|
||||
func start_pawn_select(mplayer : bool) -> void:
|
||||
@@ -139,8 +155,6 @@ func check_level_ready() -> void:
|
||||
for id in level_synced:
|
||||
if level_synced[id] == false:
|
||||
level_ready = false
|
||||
if level_ready:
|
||||
level.setup()
|
||||
|
||||
func oneshot(stream : AudioStream) -> void:
|
||||
var shot = one_shot_template.instantiate()
|
||||
@@ -149,3 +163,6 @@ func oneshot(stream : AudioStream) -> void:
|
||||
level.add_child(shot)
|
||||
else:
|
||||
add_child(shot)
|
||||
|
||||
func go_to_title_screen() -> void:
|
||||
get_tree().change_scene_to_file("res://scenes/title_screen.tscn")
|
||||
|
||||
Reference in New Issue
Block a user