Remote scene instantiation for projectiles WIP
This commit is contained in:
parent
590e786d83
commit
67b228e60f
|
|
@ -69,7 +69,6 @@ func _connected_fail():
|
||||||
get_tree().set_network_peer(null) # Remove peer
|
get_tree().set_network_peer(null) # Remove peer
|
||||||
emit_signal("connection_failed")
|
emit_signal("connection_failed")
|
||||||
|
|
||||||
|
|
||||||
# Lobby management functions.
|
# Lobby management functions.
|
||||||
|
|
||||||
remote func register_player(new_player_name):
|
remote func register_player(new_player_name):
|
||||||
|
|
@ -83,6 +82,25 @@ func unregister_player(id):
|
||||||
players.erase(id)
|
players.erase(id)
|
||||||
emit_signal("player_list_changed")
|
emit_signal("player_list_changed")
|
||||||
|
|
||||||
|
remote func load_scene_on_all_clients(_scene :PackedScene, _node_path :NodePath, _global_position :Vector2 , _as_toplevel = true):
|
||||||
|
print("did I not get called others: ", players.size())
|
||||||
|
|
||||||
|
var new_scene = _scene.instance()
|
||||||
|
var _caller_id = get_tree().get_rpc_sender_id()
|
||||||
|
|
||||||
|
new_scene.set_network_master(_caller_id)
|
||||||
|
new_scene.set_as_toplevel(_as_toplevel)
|
||||||
|
new_scene.global_position = _global_position
|
||||||
|
|
||||||
|
get_node(_node_path).add_child(new_scene)
|
||||||
|
|
||||||
|
for _player in players:
|
||||||
|
rpc_id(_player, "load_scene_on_all_clients", _scene, _node_path, _global_position, _as_toplevel )
|
||||||
|
|
||||||
|
if new_scene.get_network_master() == _caller_id:
|
||||||
|
return new_scene
|
||||||
|
else:
|
||||||
|
return null
|
||||||
|
|
||||||
remote func pre_start_game(spawn_points):
|
remote func pre_start_game(spawn_points):
|
||||||
# Change scene.
|
# Change scene.
|
||||||
|
|
@ -164,6 +182,8 @@ func join_game(ip, new_player_name):
|
||||||
func get_player_list():
|
func get_player_list():
|
||||||
return players.values()
|
return players.values()
|
||||||
|
|
||||||
|
func get_player_ids():
|
||||||
|
return players.keys()
|
||||||
|
|
||||||
func get_player_name():
|
func get_player_name():
|
||||||
return player_name
|
return player_name
|
||||||
|
|
|
||||||
|
|
@ -22,5 +22,7 @@ func _ready():
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
#func _process(delta):
|
func _process(delta):
|
||||||
# pass
|
debug_text = ''
|
||||||
|
for _player_id in NetworkManager.get_player_ids():
|
||||||
|
debug_text += str(_player_id) + '\n'
|
||||||
|
|
|
||||||
|
|
@ -34,11 +34,6 @@ _global_script_classes=[ {
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://lib/classes/collision_shape2D_state_receiver.gd"
|
"path": "res://lib/classes/collision_shape2D_state_receiver.gd"
|
||||||
}, {
|
}, {
|
||||||
"base": "",
|
|
||||||
"class": "GitAPI",
|
|
||||||
"language": "NativeScript",
|
|
||||||
"path": "res://addons/godot-git-plugin/git_api.gdns"
|
|
||||||
}, {
|
|
||||||
"base": "Node",
|
"base": "Node",
|
||||||
"class": "HealthComponent",
|
"class": "HealthComponent",
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
|
|
@ -160,7 +155,6 @@ _global_script_class_icons={
|
||||||
"AudioStreamPlayer_StateReceiver": "",
|
"AudioStreamPlayer_StateReceiver": "",
|
||||||
"CameraGuide": "",
|
"CameraGuide": "",
|
||||||
"CollisionShape2D_StateReceiver": "",
|
"CollisionShape2D_StateReceiver": "",
|
||||||
"GitAPI": "",
|
|
||||||
"HealthComponent": "",
|
"HealthComponent": "",
|
||||||
"HealthPickup": "",
|
"HealthPickup": "",
|
||||||
"Interactable": "",
|
"Interactable": "",
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ extends Position2D
|
||||||
## Represents a weapon that spawns and shoots bullets.
|
## Represents a weapon that spawns and shoots bullets.
|
||||||
## The Cooldown timer controls the cooldown duration between shots.
|
## The Cooldown timer controls the cooldown duration between shots.
|
||||||
|
|
||||||
export var scene_path :Resource
|
export var scene_path :PackedScene
|
||||||
export var pew_cooldown_time :float = 1.0
|
export var pew_cooldown_time :float = 1.0
|
||||||
|
|
||||||
const BULLET_VELOCITY = 350
|
const BULLET_VELOCITY = 350
|
||||||
|
|
@ -48,19 +48,21 @@ func shoot(direction = 1):
|
||||||
# position.x = position.x * direction #shifting position before fire was unreliable
|
# position.x = position.x * direction #shifting position before fire was unreliable
|
||||||
if not timer.is_stopped():
|
if not timer.is_stopped():
|
||||||
return false
|
return false
|
||||||
var bullet = loaded_scene.instance()
|
#var bullet = loaded_scene.instance()
|
||||||
|
var bullet = NetworkManager.load_scene_on_all_clients(loaded_scene, self.get_path(), global_position , true)
|
||||||
# if (direction > 0):
|
# if (direction > 0):
|
||||||
# bullet.global_position = global_position
|
# bullet.global_position = global_position
|
||||||
# else:
|
# else:
|
||||||
# bullet.global_position = global_position - Vector2(position.x * 2, 0)
|
# bullet.global_position = global_position - Vector2(position.x * 2, 0)
|
||||||
if bullet is Projectile:
|
if bullet is Projectile:
|
||||||
bullet.global_position = global_position
|
print ("i'm a projectile")
|
||||||
|
# bullet.global_position = global_position
|
||||||
bullet.direction_normal = normal_vector
|
bullet.direction_normal = normal_vector
|
||||||
|
|
||||||
#bullet.linear_velocity = Vector2(direction * BULLET_VELOCITY, 0)
|
#bullet.linear_velocity = Vector2(direction * BULLET_VELOCITY, 0)
|
||||||
|
|
||||||
bullet.set_as_toplevel(true)
|
bullet.set_as_toplevel(true)
|
||||||
add_child(bullet)
|
# add_child(bullet)
|
||||||
# sound_shoot.play()
|
# sound_shoot.play()
|
||||||
timer.start()
|
timer.start()
|
||||||
return true
|
return true
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user