we're so close to working multiplayer

This commit is contained in:
2023-11-16 00:07:41 +11:00
parent 1500c22ccc
commit 2d123bd731
81 changed files with 578 additions and 388 deletions

View File

@ -23,6 +23,8 @@ func shoot():
var target_hitbox = target.shape_owner_get_owner(raycast.get_collider_shape())
if target_hitbox is Hitbox:
hit(target, target_hitbox)
if Data.preferences.display_self_damage_indicators:
spawn_damage_indicator(raycast.get_collision_point())
networked_hit.rpc(get_tree().root.get_path_to(target), get_tree().root.get_path_to(target_hitbox))
@ -35,3 +37,5 @@ func networked_hit(target_path : String, target_hitbox_path : String):
var target = get_tree().root.get_node(target_path)
var target_hitbox = get_tree().root.get_node(target_hitbox_path) as Hitbox
hit(target, target_hitbox)
if Data.preferences.display_party_damage_indicators:
spawn_damage_indicator(target.sprite.global_position)

View File

@ -3,23 +3,27 @@ class_name ProjectileWeapon
@export var projectile_scene : PackedScene
var force := 2.0
var force := 20.0
var projectile_id := 0
func shoot():
super.shoot()
var projectile = projectile_scene.instantiate() as Projectile
projectile.position = global_position
projectile.damage = damage
projectile.direction = -global_transform.basis.z
projectile.force = force
projectile.name = str(multiplayer.get_unique_id()) + str(projectile_id)
get_tree().root.add_child(projectile)
projectile_id += 1
networked_spawn_projectile.rpc(multiplayer.get_unique_id(), -global_transform.basis.z)
@rpc("reliable")
func networked_shoot():
super.networked_shoot()
shoot()
@rpc("reliable", "call_local")
func networked_spawn_projectile(peer_id, direction):
var projectile = projectile_scene.instantiate() as Projectile
projectile.position = global_position
projectile.damage = damage
projectile.direction = direction
projectile.force = force
projectile.name = str(peer_id) + str(projectile_id)
get_tree().root.add_child(projectile)
projectile_id += 1

View File

@ -4,6 +4,7 @@ class_name Weapon
@export var stats : CardText
@export var animator : AnimationPlayer
var damage_particle_scene = preload("res://Scenes/damage_particle.tscn")
var hero : Hero
var trigger_held := false
var second_trigger_held := false
@ -49,6 +50,14 @@ func release_second_trigger():
second_trigger_held = false
func spawn_damage_indicator(pos):
if damage > 0:
var marker = damage_particle_scene.instantiate()
get_tree().root.add_child(marker)
marker.set_number(damage)
marker.position = pos
func shoot():
animator.play("shoot")