Little warmer. Remote projectiles.
This commit is contained in:
parent
67b228e60f
commit
6dc98d7993
|
|
@ -82,10 +82,21 @@ 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):
|
func instance_on_peer_players(_scene :Resource, _node_path :NodePath, _global_position :Vector2 , _as_toplevel = true):
|
||||||
print("did I not get called others: ", players.size())
|
print ("Scene Path: ", _scene.resource_path,
|
||||||
|
" Instance At: ", _node_path,
|
||||||
|
" Position : ", _global_position)
|
||||||
|
|
||||||
var new_scene = _scene.instance()
|
rpc("load_scene_on_all_clients", _scene.resource_path, _node_path, _global_position, _as_toplevel)
|
||||||
|
|
||||||
|
|
||||||
|
remotesync func load_scene_on_all_clients(_scene :String, _node_path :NodePath, _global_position :Vector2 , _as_toplevel = true):
|
||||||
|
print ( "-- Remote Scene Call -- \n",
|
||||||
|
" Scene Path: ", _scene,
|
||||||
|
" Instance At: ", _node_path,
|
||||||
|
" Position : ", _global_position)
|
||||||
|
|
||||||
|
var new_scene = load(_scene).instance()
|
||||||
var _caller_id = get_tree().get_rpc_sender_id()
|
var _caller_id = get_tree().get_rpc_sender_id()
|
||||||
|
|
||||||
new_scene.set_network_master(_caller_id)
|
new_scene.set_network_master(_caller_id)
|
||||||
|
|
@ -94,13 +105,13 @@ remote func load_scene_on_all_clients(_scene :PackedScene, _node_path :NodePath,
|
||||||
|
|
||||||
get_node(_node_path).add_child(new_scene)
|
get_node(_node_path).add_child(new_scene)
|
||||||
|
|
||||||
for _player in players:
|
# for _player in players:
|
||||||
rpc_id(_player, "load_scene_on_all_clients", _scene, _node_path, _global_position, _as_toplevel )
|
# rpc_id(_player, "load_scene_on_all_clients", _scene, _node_path, _global_position, _as_toplevel )
|
||||||
|
|
||||||
if new_scene.get_network_master() == _caller_id:
|
# if new_scene.get_network_master() == _caller_id:
|
||||||
return new_scene
|
# return new_scene
|
||||||
else:
|
# else:
|
||||||
return null
|
# return null
|
||||||
|
|
||||||
remote func pre_start_game(spawn_points):
|
remote func pre_start_game(spawn_points):
|
||||||
# Change scene.
|
# Change scene.
|
||||||
|
|
|
||||||
|
|
@ -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 :PackedScene
|
export var scene_path :Resource
|
||||||
export var pew_cooldown_time :float = 1.0
|
export var pew_cooldown_time :float = 1.0
|
||||||
|
|
||||||
const BULLET_VELOCITY = 350
|
const BULLET_VELOCITY = 350
|
||||||
|
|
@ -49,7 +49,7 @@ func shoot(direction = 1):
|
||||||
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)
|
var bullet = NetworkManager.instance_on_peer_players(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:
|
||||||
|
|
@ -61,9 +61,21 @@ func shoot(direction = 1):
|
||||||
|
|
||||||
#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
|
||||||
|
|
||||||
|
#var bomb_name = String(get_name()) + str(bomb_index)
|
||||||
|
#var bomb_pos = position
|
||||||
|
#rpc("setup_bomb", bomb_name, bomb_pos, get_tree().get_network_unique_id())
|
||||||
|
|
||||||
|
remotesync func setup_bomb(bomb_name, pos, by_who):
|
||||||
|
var bomb = loaded_scene.instance()
|
||||||
|
bomb.set_name(bomb_name) # Ensure unique name for the bomb
|
||||||
|
bomb.position = pos
|
||||||
|
bomb.from_player = by_who
|
||||||
|
# No need to set network master to bomb, will be owned by server by default
|
||||||
|
get_node("../..").add_child(bomb)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user