Defuse win
This commit is contained in:
parent
215598c63b
commit
8535dba9cd
10 changed files with 151 additions and 21 deletions
|
|
@ -21,6 +21,7 @@ const DEFENCE_LAYER: int = 0b100000
|
|||
|
||||
signal round_started
|
||||
signal round_state_changed(state: int)
|
||||
signal player_stopped_interacting(id: int)
|
||||
|
||||
var player_nodes: Dictionary[int,Player] = {}
|
||||
var object_containers: Array[ObjectContainer]
|
||||
|
|
@ -59,7 +60,7 @@ func _ready() -> void:
|
|||
round_timer.timeout.connect(end_round.bind(TEAMS.DEFENCE))
|
||||
|
||||
buy_timer = Timer.new()
|
||||
buy_timer.wait_time = 15
|
||||
buy_timer.wait_time = 1
|
||||
buy_timer.one_shot = true
|
||||
buy_timer.timeout.connect(begin_main_stage)
|
||||
|
||||
|
|
@ -170,6 +171,12 @@ func begin_bomb_stage() -> void:
|
|||
round_state = ROUND_STATES.AFTER_PLANT
|
||||
round_state_changed.emit(round_state)
|
||||
|
||||
func defuse_win() -> void:
|
||||
if not multiplayer.is_server():
|
||||
return
|
||||
bomb_timer.stop()
|
||||
end_round(TEAMS.DEFENCE)
|
||||
|
||||
@rpc("any_peer","call_local","reliable")
|
||||
func add_dead(team: int):
|
||||
if multiplayer.is_server() == false:
|
||||
|
|
@ -250,6 +257,43 @@ func shoot_internal(id:int , damage: int) -> void:
|
|||
if collision != {} and collision["collider"] is Player:
|
||||
collision["collider"].take_damage.rpc_id(int(collision["collider"].name),damage)
|
||||
|
||||
func interact() -> void:
|
||||
if multiplayer.get_unique_id() == 1:
|
||||
interact_internal(1)
|
||||
else:
|
||||
interact_internal.rpc_id(1,multiplayer.get_unique_id())
|
||||
|
||||
@rpc("any_peer","call_local","reliable")
|
||||
func interact_internal(id:int) -> void:
|
||||
if multiplayer.is_server() == false:
|
||||
return
|
||||
|
||||
var player: Player = player_nodes[id]
|
||||
var player_camera: Camera3D = player.get_node("Camera3D")
|
||||
var space: PhysicsDirectSpaceState3D = player.get_world_3d().direct_space_state
|
||||
var endpoint: Vector3 = player_camera.global_position - player_camera.global_basis.z * 3
|
||||
|
||||
var ray = PhysicsRayQueryParameters3D.create(player_camera.global_position,endpoint,1)
|
||||
ray.exclude = [player.get_rid()]
|
||||
ray.collide_with_areas = false
|
||||
ray.collision_mask |= 64
|
||||
|
||||
var collision = space.intersect_ray(ray)
|
||||
if collision != {} and collision["collider"] is Interactible:
|
||||
collision["collider"].interaction_start(id)
|
||||
|
||||
func stop_interact():
|
||||
if multiplayer.get_unique_id() == 1:
|
||||
stop_interact_internal(1)
|
||||
else:
|
||||
stop_interact_internal.rpc_id(1,multiplayer.get_unique_id())
|
||||
|
||||
@rpc("any_peer","call_local","reliable")
|
||||
func stop_interact_internal(id: int) -> void:
|
||||
if multiplayer.is_server() == false:
|
||||
return
|
||||
player_stopped_interacting.emit(id)
|
||||
|
||||
func is_on_site() -> bool:
|
||||
for plant in plants:
|
||||
if plant.is_player_on_site(multiplayer.get_unique_id()):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue