Compare commits
3 Commits
bde9492c63
...
67b228e60f
| Author | SHA1 | Date | |
|---|---|---|---|
| 67b228e60f | |||
| 590e786d83 | |||
| 0ea4a45b06 |
26
Main.tscn
26
Main.tscn
|
|
@ -1,5 +1,7 @@
|
||||||
[gd_scene load_steps=6 format=2]
|
[gd_scene load_steps=9 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://src/classes/camera_guide.gd" type="Script" id=1]
|
||||||
|
[ext_resource path="res://src/Camera2D.gd" type="Script" id=2]
|
||||||
[ext_resource path="res://src/ui/scene_transition.tscn" type="PackedScene" id=4]
|
[ext_resource path="res://src/ui/scene_transition.tscn" type="PackedScene" id=4]
|
||||||
[ext_resource path="res://src/Main.gd" type="Script" id=7]
|
[ext_resource path="res://src/Main.gd" type="Script" id=7]
|
||||||
[ext_resource path="res://src/ui/lobby.tscn" type="PackedScene" id=9]
|
[ext_resource path="res://src/ui/lobby.tscn" type="PackedScene" id=9]
|
||||||
|
|
@ -17,6 +19,9 @@ void vertex() {
|
||||||
shader = SubResource( 2 )
|
shader = SubResource( 2 )
|
||||||
shader_param/cam_offset = Vector2( 0, 0 )
|
shader_param/cam_offset = Vector2( 0, 0 )
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id=4]
|
||||||
|
extents = Vector2( 160, 90 )
|
||||||
|
|
||||||
[node name="Main" type="Node2D"]
|
[node name="Main" type="Node2D"]
|
||||||
script = ExtResource( 7 )
|
script = ExtResource( 7 )
|
||||||
|
|
||||||
|
|
@ -37,3 +42,22 @@ render_target_update_mode = 3
|
||||||
[node name="Lobby" parent="ViewportContainer/Viewport" instance=ExtResource( 9 )]
|
[node name="Lobby" parent="ViewportContainer/Viewport" instance=ExtResource( 9 )]
|
||||||
|
|
||||||
[node name="SceneTransition" parent="ViewportContainer/Viewport" instance=ExtResource( 4 )]
|
[node name="SceneTransition" parent="ViewportContainer/Viewport" instance=ExtResource( 4 )]
|
||||||
|
|
||||||
|
[node name="Camera2D" type="Camera2D" parent="ViewportContainer/Viewport"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
position = Vector2( 160, 90 )
|
||||||
|
current = true
|
||||||
|
script = ExtResource( 2 )
|
||||||
|
tracking_node_path = NodePath("../CameraGuide")
|
||||||
|
|
||||||
|
[node name="CameraGuide" type="KinematicBody2D" parent="ViewportContainer/Viewport"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
position = Vector2( 160, 90 )
|
||||||
|
collision_layer = 0
|
||||||
|
collision_mask = 256
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="ViewportContainer/Viewport/CameraGuide"]
|
||||||
|
visible = false
|
||||||
|
shape = SubResource( 4 )
|
||||||
|
one_way_collision = true
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
[ext_resource path="res://lib/classes/animated_sprite_state_receiver.gd" type="Script" id=4]
|
[ext_resource path="res://lib/classes/animated_sprite_state_receiver.gd" type="Script" id=4]
|
||||||
[ext_resource path="res://lib/classes/audiostreamplayer_state_receiver.gd" type="Script" id=5]
|
[ext_resource path="res://lib/classes/audiostreamplayer_state_receiver.gd" type="Script" id=5]
|
||||||
|
|
||||||
[node name="Actor" type="KinematicBody2D"]
|
[node name="Actor" type="KinematicBody2D" groups=["world"]]
|
||||||
collision_layer = 2
|
collision_layer = 2
|
||||||
script = ExtResource( 2 )
|
script = ExtResource( 2 )
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,18 @@ onready var current_music_track :AudioStream
|
||||||
|
|
||||||
onready var viewport_container = get_node("/root/Main/ViewportContainer") #$ViewportContainer
|
onready var viewport_container = get_node("/root/Main/ViewportContainer") #$ViewportContainer
|
||||||
onready var viewport = get_node("/root/Main/ViewportContainer/Viewport") # $ViewportContainer/Viewport
|
onready var viewport = get_node("/root/Main/ViewportContainer/Viewport") # $ViewportContainer/Viewport
|
||||||
onready var camera_guide :CameraGuide = get_node("/root/Main/ViewportContainer/Viewport/World/CameraGuide")
|
onready var camera_guide :CameraGuide = get_node("/root/Main/ViewportContainer/Viewport/CameraGuide")
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
NetworkManager.connect("game_started", self, "_on_game_started")
|
||||||
|
NetworkManager.connect("game_ended", self, "_on_game_ended")
|
||||||
|
|
||||||
|
func _on_game_started():
|
||||||
|
camera_guide.enable_tracking()
|
||||||
|
|
||||||
|
func _on_game_ended():
|
||||||
|
camera_guide.disable_tracking()
|
||||||
|
camera_guide.reset_position()
|
||||||
|
|
||||||
func change_music_track(_music_track :AudioStream ):
|
func change_music_track(_music_track :AudioStream ):
|
||||||
if current_music_track != _music_track:
|
if current_music_track != _music_track:
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ signal player_list_changed()
|
||||||
signal connection_failed()
|
signal connection_failed()
|
||||||
signal connection_succeeded()
|
signal connection_succeeded()
|
||||||
signal game_ended()
|
signal game_ended()
|
||||||
|
signal game_started()
|
||||||
signal game_error(what)
|
signal game_error(what)
|
||||||
|
|
||||||
# Default game server port. Can be any number between 1024 and 49151.
|
# Default game server port. Can be any number between 1024 and 49151.
|
||||||
|
|
@ -68,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):
|
||||||
|
|
@ -82,12 +82,33 @@ 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.
|
||||||
var world :Node = load("res://src/levels/TestBox.tscn").instance()
|
var world :Node = load("res://src/levels/TestBox.tscn").instance()
|
||||||
var ui :Node = load("res://src/ui/HUD.tscn").instance()
|
var ui :Node = load("res://src/ui/HUD.tscn").instance()
|
||||||
world.set_name("World")
|
world.set_name("World")
|
||||||
|
world.add_to_group('world')
|
||||||
|
ui.add_to_group('world')
|
||||||
|
|
||||||
get_tree().get_root().get_node("/root/Main/ViewportContainer/Viewport").add_child(world)
|
get_tree().get_root().get_node("/root/Main/ViewportContainer/Viewport").add_child(world)
|
||||||
get_tree().get_root().get_node("/root/Main/ViewportContainer/Viewport").add_child(ui)
|
get_tree().get_root().get_node("/root/Main/ViewportContainer/Viewport").add_child(ui)
|
||||||
|
|
@ -130,7 +151,7 @@ remote func pre_start_game(spawn_points):
|
||||||
|
|
||||||
remote func post_start_game():
|
remote func post_start_game():
|
||||||
get_tree().set_pause(false) # Unpause and unleash the game!
|
get_tree().set_pause(false) # Unpause and unleash the game!
|
||||||
|
emit_signal("game_started")
|
||||||
|
|
||||||
remote func ready_to_start(id):
|
remote func ready_to_start(id):
|
||||||
assert(get_tree().is_network_server())
|
assert(get_tree().is_network_server())
|
||||||
|
|
@ -161,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
|
||||||
|
|
@ -184,9 +207,10 @@ func begin_game():
|
||||||
|
|
||||||
|
|
||||||
func end_game():
|
func end_game():
|
||||||
if has_node("/root/Main/ViewportContainer/Viewport/World"): # Game is in progress.
|
get_tree().call_group("world","queue_free")
|
||||||
# End it
|
# if has_node("/root/Main/ViewportContainer/Viewport/World"): # Game is in progress.
|
||||||
get_node("/root/Main/ViewportContainer/Viewport/World").queue_free()
|
# # End it
|
||||||
|
# get_node("/root/Main/ViewportContainer/Viewport/World").queue_free()
|
||||||
|
|
||||||
emit_signal("game_ended")
|
emit_signal("game_ended")
|
||||||
players.clear()
|
players.clear()
|
||||||
|
|
|
||||||
|
|
@ -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": "",
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,5 @@ collision_mask = 256
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="CameraGuide"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="CameraGuide"]
|
||||||
visible = false
|
|
||||||
shape = SubResource( 1 )
|
shape = SubResource( 1 )
|
||||||
one_way_collision = true
|
one_way_collision = true
|
||||||
|
|
|
||||||
|
|
@ -200,3 +200,4 @@ func _on_Movement_StateMachine_state_changed(old_state_name, new_state):
|
||||||
|
|
||||||
func _on_Health_Component_health_depleted():
|
func _on_Health_Component_health_depleted():
|
||||||
movement_state_machine.change_to_known_state('death')
|
movement_state_machine.change_to_known_state('death')
|
||||||
|
NetworkManager.end_game()
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,6 @@
|
||||||
|
|
||||||
[sub_resource type="Resource" id=3]
|
[sub_resource type="Resource" id=3]
|
||||||
resource_local_to_scene = true
|
resource_local_to_scene = true
|
||||||
resource_name = "hurt"
|
|
||||||
script = ExtResource( 18 )
|
script = ExtResource( 18 )
|
||||||
debug_state = false
|
debug_state = false
|
||||||
timeout_seconds = 2.0
|
timeout_seconds = 2.0
|
||||||
|
|
@ -50,7 +49,6 @@ jerk_factor = 0.0
|
||||||
animation_sequence = [ "hurt" ]
|
animation_sequence = [ "hurt" ]
|
||||||
|
|
||||||
[sub_resource type="Resource" id=4]
|
[sub_resource type="Resource" id=4]
|
||||||
resource_name = "move_0"
|
|
||||||
script = ExtResource( 24 )
|
script = ExtResource( 24 )
|
||||||
state_name = "move"
|
state_name = "move"
|
||||||
frame_number = 0
|
frame_number = 0
|
||||||
|
|
@ -58,7 +56,6 @@ sound_effect_type = 0
|
||||||
sound = ExtResource( 25 )
|
sound = ExtResource( 25 )
|
||||||
|
|
||||||
[sub_resource type="Resource" id=5]
|
[sub_resource type="Resource" id=5]
|
||||||
resource_name = "move_4"
|
|
||||||
script = ExtResource( 24 )
|
script = ExtResource( 24 )
|
||||||
state_name = "move"
|
state_name = "move"
|
||||||
frame_number = 4
|
frame_number = 4
|
||||||
|
|
@ -66,7 +63,6 @@ sound_effect_type = 0
|
||||||
sound = ExtResource( 25 )
|
sound = ExtResource( 25 )
|
||||||
|
|
||||||
[sub_resource type="Resource" id=6]
|
[sub_resource type="Resource" id=6]
|
||||||
resource_name = "land_0"
|
|
||||||
script = ExtResource( 24 )
|
script = ExtResource( 24 )
|
||||||
state_name = "land"
|
state_name = "land"
|
||||||
frame_number = 0
|
frame_number = 0
|
||||||
|
|
|
||||||
|
|
@ -12,14 +12,21 @@ var _is_tracking :bool = true
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
pass # Replace with function body.
|
## Do not track until told to
|
||||||
|
disable_tracking()
|
||||||
|
|
||||||
func enable_tracking() -> void:
|
func enable_tracking() -> void:
|
||||||
##TODO: add extra collission checks here to make sure we aren't stuck maybe?
|
##TODO: add extra collission checks here to make sure we aren't stuck maybe?
|
||||||
_is_tracking = true
|
_is_tracking = true
|
||||||
|
self.set_physics_process(true)
|
||||||
|
|
||||||
func disable_tracking() -> void:
|
func disable_tracking() -> void:
|
||||||
_is_tracking = false
|
_is_tracking = false
|
||||||
|
self.set_physics_process(false)
|
||||||
|
|
||||||
|
func reset_position() -> void:
|
||||||
|
## Set to half screen
|
||||||
|
global_position = game_size / 2
|
||||||
|
|
||||||
var flip_tracker = 0.0
|
var flip_tracker = 0.0
|
||||||
var stuck_check: bool
|
var stuck_check: bool
|
||||||
|
|
@ -29,6 +36,7 @@ func _physics_process(delta):
|
||||||
#pos = lerp(pos, PlayerInfo.player_position, delta )
|
#pos = lerp(pos, PlayerInfo.player_position, delta )
|
||||||
var dir_to = Vector2(0,0)
|
var dir_to = Vector2(0,0)
|
||||||
|
|
||||||
|
if (PlayerInfo.get_player_data(0)):
|
||||||
var player_position = PlayerInfo.get_player_data(0).player_position
|
var player_position = PlayerInfo.get_player_data(0).player_position
|
||||||
|
|
||||||
# Calculate how far the player is from object
|
# Calculate how far the player is from object
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
radius = 6.0
|
radius = 6.0
|
||||||
height = 2.0
|
height = 2.0
|
||||||
|
|
||||||
[node name="MushroomPew" instance=ExtResource( 1 )]
|
[node name="MushroomPew" groups=["world"] instance=ExtResource( 1 )]
|
||||||
velocity_pps = 300.0
|
velocity_pps = 300.0
|
||||||
lifespan = 0.5
|
lifespan = 0.5
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user