mirror of
https://github.com/Relintai/broken_seals_2d.git
synced 2024-11-11 20:35:10 +01:00
Reworked entity body setup. Now instead of Entity -> body -> (Sprite, Nameplate etc). It will worki like Body -> (Entity, sprite, Nameplate etc). This fixes y sorting. Nameplates are a bit broken right now, that will be fixed later.
This commit is contained in:
parent
b549f908bb
commit
1b375d109d
26
game/Node.tscn
Normal file
26
game/Node.tscn
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[gd_scene load_steps=2 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://sprites/characters/CharacterSideModel.tscn" type="PackedScene" id=1]
|
||||||
|
|
||||||
|
[node name="Node" type="Node"]
|
||||||
|
|
||||||
|
[node name="Node2D" type="Node2D" parent="."]
|
||||||
|
|
||||||
|
[node name="Camera2D" type="Camera2D" parent="Node2D"]
|
||||||
|
|
||||||
|
[node name="YSort" type="YSort" parent="Node2D"]
|
||||||
|
|
||||||
|
[node name="Node" type="Node" parent="Node2D/YSort"]
|
||||||
|
|
||||||
|
[node name="CharacterSideModel" parent="Node2D/YSort/Node" instance=ExtResource( 1 )]
|
||||||
|
position = Vector2( -55.7296, -15.6844 )
|
||||||
|
|
||||||
|
[node name="Node2" type="Node" parent="Node2D/YSort"]
|
||||||
|
|
||||||
|
[node name="CharacterSideModel2" parent="Node2D/YSort/Node2" instance=ExtResource( 1 )]
|
||||||
|
position = Vector2( -57.0644, -30.7013 )
|
||||||
|
|
||||||
|
[node name="Node3" type="Node" parent="Node2D/YSort"]
|
||||||
|
|
||||||
|
[node name="CharacterSideModel3" parent="Node2D/YSort/Node3" instance=ExtResource( 1 )]
|
||||||
|
position = Vector2( -40.7126, -17.6866 )
|
@ -24,9 +24,9 @@
|
|||||||
extends KinematicBody2D
|
extends KinematicBody2D
|
||||||
|
|
||||||
export(float) var MOUSE_SENSITIVITY : float = 0.05
|
export(float) var MOUSE_SENSITIVITY : float = 0.05
|
||||||
export(String) var world_path : String = "../.."
|
export(String) var world_path : String = ".."
|
||||||
export(NodePath) var model_path : NodePath = "Rotation_Helper/Model"
|
#export(NodePath) var model_path : NodePath = "Rotation_Helper/Model"
|
||||||
export(NodePath) var character_skeleton_path : NodePath = "Character"
|
#export(NodePath) var character_skeleton_path : NodePath = "Character"
|
||||||
|
|
||||||
const BASE_SPEED = 60.0
|
const BASE_SPEED = 60.0
|
||||||
|
|
||||||
@ -91,20 +91,34 @@ func _enter_tree() -> void:
|
|||||||
world = get_node(world_path) as Node2D
|
world = get_node(world_path) as Node2D
|
||||||
camera = get_node_or_null("Camera") as Camera2D
|
camera = get_node_or_null("Camera") as Camera2D
|
||||||
|
|
||||||
character_skeleton = get_node(character_skeleton_path)
|
#character_skeleton = get_node(character_skeleton_path)
|
||||||
entity = get_node("..")
|
#entity = get_node("..")
|
||||||
entity.set_character_skeleton(character_skeleton)
|
#entity.set_character_skeleton(character_skeleton)
|
||||||
# entity.connect("notification_ccast", self, "on_notification_ccast")
|
# entity.connect("notification_ccast", self, "on_notification_ccast")
|
||||||
entity.connect("diesd", self, "on_diesd")
|
entity.connect("diesd", self, "on_diesd")
|
||||||
entity.connect("onc_entity_controller_changed", self, "on_c_controlled_changed")
|
entity.connect("onc_entity_controller_changed", self, "on_c_controlled_changed")
|
||||||
owner = entity
|
entity.connect("centity_data_changed", self, "on_centity_data_changed")
|
||||||
|
|
||||||
on_c_controlled_changed()
|
on_c_controlled_changed()
|
||||||
|
|
||||||
transform = entity.get_transform_2d(true)
|
transform = entity.get_transform_2d(true)
|
||||||
|
entity.set_body(self)
|
||||||
set_physics_process(true)
|
set_physics_process(true)
|
||||||
|
|
||||||
|
func on_centity_data_changed(entd : EntityData):
|
||||||
|
if entd.entity_species_data:
|
||||||
|
var sk : CharacterSkeleton2D = entd.entity_species_data.get_model_data(0).body.instance()
|
||||||
|
|
||||||
|
if character_skeleton:
|
||||||
|
character_skeleton.queue_free()
|
||||||
|
|
||||||
|
character_skeleton = sk
|
||||||
|
entity.set_character_skeleton(character_skeleton)
|
||||||
|
|
||||||
|
if character_skeleton:
|
||||||
|
add_child(character_skeleton)
|
||||||
|
|
||||||
|
|
||||||
func _process(delta : float) -> void:
|
func _process(delta : float) -> void:
|
||||||
if entity.ai_state == EntityEnums.AI_STATE_OFF:
|
if entity.ai_state == EntityEnums.AI_STATE_OFF:
|
||||||
return
|
return
|
||||||
@ -135,6 +149,9 @@ func _physics_process(delta : float) -> void:
|
|||||||
if not _on:
|
if not _on:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if !world:
|
||||||
|
return
|
||||||
|
|
||||||
if world.initial_generation:
|
if world.initial_generation:
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -184,6 +201,9 @@ func process_input(delta: float) -> void:
|
|||||||
|
|
||||||
var input_length : float = input_dir.length_squared()
|
var input_length : float = input_dir.length_squared()
|
||||||
|
|
||||||
|
if !character_skeleton:
|
||||||
|
return
|
||||||
|
|
||||||
if input_length > 0.1:
|
if input_length > 0.1:
|
||||||
#handle_graphic_facing(abs(dir.dot(Vector2(0, 1))) > 0.9)
|
#handle_graphic_facing(abs(dir.dot(Vector2(0, 1))) > 0.9)
|
||||||
character_skeleton.update_facing(input_dir)
|
character_skeleton.update_facing(input_dir)
|
||||||
@ -398,9 +418,11 @@ func target(position : Vector2):
|
|||||||
|
|
||||||
if results:
|
if results:
|
||||||
for result in results:
|
for result in results:
|
||||||
if result.collider and result.collider.owner is Entity:
|
if result.collider:
|
||||||
entity.target_crequest_change((result.collider.owner as Node).get_path())
|
|
||||||
return
|
if result.collider.has_method("get_entity"):
|
||||||
|
entity.target_crequest_change((result.collider.get_entity() as Node).get_path())
|
||||||
|
return
|
||||||
|
|
||||||
entity.target_crequest_change(NodePath())
|
entity.target_crequest_change(NodePath())
|
||||||
else:
|
else:
|
||||||
@ -413,8 +435,8 @@ func cmouseover(event):
|
|||||||
|
|
||||||
if results:
|
if results:
|
||||||
for result in results:
|
for result in results:
|
||||||
if result.collider and result.collider.owner is Entity:
|
if result.collider and result.collider.has_method("get_entity") :
|
||||||
var mo : Entity = result.collider.owner as Entity
|
var mo : Entity = result.collider.get_entity() as Entity
|
||||||
|
|
||||||
if last_mouse_over != null and last_mouse_over != mo:
|
if last_mouse_over != null and last_mouse_over != mo:
|
||||||
if is_instance_valid(last_mouse_over):
|
if is_instance_valid(last_mouse_over):
|
||||||
@ -501,7 +523,7 @@ func on_c_controlled_changed():
|
|||||||
set_process_unhandled_input(false)
|
set_process_unhandled_input(false)
|
||||||
var nameplatescn : PackedScene = ResourceLoader.load("res://ui/2d/world/nameplates/NamePlate.tscn")
|
var nameplatescn : PackedScene = ResourceLoader.load("res://ui/2d/world/nameplates/NamePlate.tscn")
|
||||||
_nameplate = nameplatescn.instance()
|
_nameplate = nameplatescn.instance()
|
||||||
get_parent().add_child(_nameplate)
|
add_child(_nameplate)
|
||||||
|
|
||||||
func on_diesd(entity):
|
func on_diesd(entity):
|
||||||
if dead:
|
if dead:
|
||||||
@ -525,3 +547,5 @@ remote func cset_position(pposition : Vector2) -> void:
|
|||||||
pposition = pposition
|
pposition = pposition
|
||||||
|
|
||||||
|
|
||||||
|
func get_entity() -> Entity:
|
||||||
|
return entity
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
[gd_scene load_steps=4 format=2]
|
[gd_scene load_steps=3 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://player/Body.gd" type="Script" id=1]
|
[ext_resource path="res://player/Body.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://sprites/characters/Character.tscn" type="PackedScene" id=2]
|
|
||||||
|
|
||||||
[sub_resource type="CircleShape2D" id=1]
|
[sub_resource type="CircleShape2D" id=1]
|
||||||
radius = 8.0
|
radius = 8.0
|
||||||
@ -9,7 +8,5 @@ radius = 8.0
|
|||||||
[node name="Body" type="KinematicBody2D"]
|
[node name="Body" type="KinematicBody2D"]
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
[node name="Character" parent="." instance=ExtResource( 2 )]
|
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
shape = SubResource( 1 )
|
shape = SubResource( 1 )
|
@ -1,26 +1,12 @@
|
|||||||
[gd_scene load_steps=2 format=2]
|
[gd_scene load_steps=4 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://player/DisplayPlayer.gd" type="Script" id=1]
|
[ext_resource path="res://player/DisplayPlayer.gd" type="Script" id=1]
|
||||||
|
|
||||||
[node name="DisplayPlayer" type="Entity" groups=[
|
[sub_resource type="EntityResourceHealth" id=1]
|
||||||
"players",
|
|
||||||
]]
|
[sub_resource type="EntityResourceSpeed" id=2]
|
||||||
body_path = NodePath("KinematicBody2D")
|
|
||||||
character_skeleton_path = NodePath("KinematicBody2D/Rotation_Helper/Model")
|
[node name="DisplayPlayer" type="Entity" groups=["players"]]
|
||||||
sseed = 9240987
|
sseed = 9240987
|
||||||
cseed = 9240987
|
sresources = [ SubResource( 1 ), SubResource( 2 ) ]
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
[node name="KinematicBody2D" type="KinematicBody2D" parent="."]
|
|
||||||
|
|
||||||
[node name="Rotation_Helper" type="Spatial" parent="KinematicBody2D"]
|
|
||||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.960532, 0 )
|
|
||||||
__meta__ = {
|
|
||||||
"_editor_description_": ""
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="Model" type="Spatial" parent="KinematicBody2D/Rotation_Helper"]
|
|
||||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.875205, 0 )
|
|
||||||
__meta__ = {
|
|
||||||
"_editor_description_": ""
|
|
||||||
}
|
|
||||||
|
@ -20,12 +20,18 @@ extends Control
|
|||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
# SOFTWARE.
|
# SOFTWARE.
|
||||||
|
|
||||||
export (String) var player_path : String = "../../.."
|
export (String) var player_path : String = "../.."
|
||||||
export (Array, NodePath) var child_controls : Array
|
export (Array, NodePath) var child_controls : Array
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
if player_path != null:
|
if player_path != null:
|
||||||
var player : Entity = get_node(player_path) as Entity
|
# var player : Entity = get_node(player_path) as Entity
|
||||||
|
var n : Node = get_node(player_path)
|
||||||
|
|
||||||
|
if !n:
|
||||||
|
return
|
||||||
|
|
||||||
|
var player : Entity = n.entity
|
||||||
|
|
||||||
if (player == null):
|
if (player == null):
|
||||||
print("Player is null!")
|
print("Player is null!")
|
||||||
|
@ -53,7 +53,7 @@ func _enter_tree():
|
|||||||
health_bar = get_node(health_bar_path) as TextureProgress
|
health_bar = get_node(health_bar_path) as TextureProgress
|
||||||
health_bar_label = get_node(health_bar_label_path) as Label
|
health_bar_label = get_node(health_bar_label_path) as Label
|
||||||
|
|
||||||
entity = get_node("..") as Entity
|
entity = get_node("..").entity
|
||||||
entity.connect("centity_resource_added", self, "on_centity_resource_added")
|
entity.connect("centity_resource_added", self, "on_centity_resource_added")
|
||||||
|
|
||||||
name_label.text = entity.centity_name
|
name_label.text = entity.centity_name
|
||||||
|
@ -6,8 +6,6 @@
|
|||||||
|
|
||||||
[sub_resource type="EntityResourceSpeed" id=2]
|
[sub_resource type="EntityResourceSpeed" id=2]
|
||||||
|
|
||||||
[node name="Player" type="Entity" groups=[
|
[node name="Player" type="Entity" groups=["players"]]
|
||||||
"players",
|
|
||||||
]]
|
|
||||||
sresources = [ SubResource( 1 ), SubResource( 2 ) ]
|
sresources = [ SubResource( 1 ), SubResource( 2 ) ]
|
||||||
script = ExtResource( 2 )
|
script = ExtResource( 2 )
|
||||||
|
@ -24,6 +24,7 @@ extends ESSEntitySpawner
|
|||||||
# SOFTWARE.
|
# SOFTWARE.
|
||||||
|
|
||||||
export(PackedScene) var player_display_scene : PackedScene
|
export(PackedScene) var player_display_scene : PackedScene
|
||||||
|
export(PackedScene) var player_body_scene : PackedScene
|
||||||
export(String) var spawn_parent_path : String = "/root/Main"
|
export(String) var spawn_parent_path : String = "/root/Main"
|
||||||
export(int) var default_level_override : int = 0
|
export(int) var default_level_override : int = 0
|
||||||
|
|
||||||
@ -242,6 +243,21 @@ func _request_entity_spawn(createinfo : EntityCreateInfo):
|
|||||||
|
|
||||||
if createinfo.entity_player_type == EntityEnums.ENTITY_PLAYER_TYPE_DISPLAY:
|
if createinfo.entity_player_type == EntityEnums.ENTITY_PLAYER_TYPE_DISPLAY:
|
||||||
entity_node = player_display_scene.instance()
|
entity_node = player_display_scene.instance()
|
||||||
|
|
||||||
|
if (createinfo.parent_path == ""):
|
||||||
|
if _spawn_parent == null:
|
||||||
|
_spawn_parent = get_tree().root.get_node(spawn_parent_path)
|
||||||
|
|
||||||
|
if _spawn_parent.current_scene != null:
|
||||||
|
var spawn_parent = _spawn_parent.current_scene
|
||||||
|
|
||||||
|
spawn_parent.add_child(entity_node)
|
||||||
|
else:
|
||||||
|
get_tree().root.get_node(createinfo.parent_path).add_child(entity_node)
|
||||||
|
|
||||||
|
entity_node.setup(createinfo)
|
||||||
|
createinfo.created_entity = entity_node
|
||||||
|
return
|
||||||
else:
|
else:
|
||||||
if not createinfo.networked:
|
if not createinfo.networked:
|
||||||
if createinfo.entity_controller == EntityEnums.ENITIY_CONTROLLER_PLAYER:
|
if createinfo.entity_controller == EntityEnums.ENITIY_CONTROLLER_PLAYER:
|
||||||
@ -255,6 +271,11 @@ func _request_entity_spawn(createinfo : EntityCreateInfo):
|
|||||||
print("EntityManager: entity node is null")
|
print("EntityManager: entity node is null")
|
||||||
return null
|
return null
|
||||||
|
|
||||||
|
var body : Node2D = player_body_scene.instance()
|
||||||
|
body.add_child(entity_node)
|
||||||
|
body.entity = entity_node
|
||||||
|
|
||||||
|
|
||||||
entity_node.set_transform_2d(createinfo.transform2d)
|
entity_node.set_transform_2d(createinfo.transform2d)
|
||||||
|
|
||||||
if (createinfo.parent_path == ""):
|
if (createinfo.parent_path == ""):
|
||||||
@ -264,9 +285,9 @@ func _request_entity_spawn(createinfo : EntityCreateInfo):
|
|||||||
if _spawn_parent.current_scene != null:
|
if _spawn_parent.current_scene != null:
|
||||||
var spawn_parent = _spawn_parent.current_scene
|
var spawn_parent = _spawn_parent.current_scene
|
||||||
|
|
||||||
spawn_parent.add_child(entity_node)
|
spawn_parent.add_child(body)
|
||||||
else:
|
else:
|
||||||
get_tree().root.get_node(createinfo.parent_path).add_child(entity_node)
|
get_tree().root.get_node(createinfo.parent_path).add_child(body)
|
||||||
|
|
||||||
entity_node.setup(createinfo)
|
entity_node.setup(createinfo)
|
||||||
|
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
[gd_scene load_steps=3 format=2]
|
[gd_scene load_steps=4 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://player/bs_entity_spawner.gd" type="Script" id=1]
|
[ext_resource path="res://player/bs_entity_spawner.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://player/DisplayPlayer.tscn" type="PackedScene" id=2]
|
[ext_resource path="res://player/DisplayPlayer.tscn" type="PackedScene" id=2]
|
||||||
|
[ext_resource path="res://player/Body.tscn" type="PackedScene" id=3]
|
||||||
|
|
||||||
[node name="ESSEntitySpawner" type="ESSEntitySpawner"]
|
[node name="ESSEntitySpawner" type="ESSEntitySpawner"]
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
player_display_scene = ExtResource( 2 )
|
player_display_scene = ExtResource( 2 )
|
||||||
|
player_body_scene = ExtResource( 3 )
|
||||||
|
@ -104,7 +104,7 @@ func generate() -> void:
|
|||||||
func save() -> void:
|
func save() -> void:
|
||||||
if _player == null or _player_file_name == "":
|
if _player == null or _player_file_name == "":
|
||||||
return
|
return
|
||||||
|
|
||||||
ESS.entity_spawner.save_player(_player, _player_file_name)
|
ESS.entity_spawner.save_player(_player, _player_file_name)
|
||||||
|
|
||||||
func _generation_finished():
|
func _generation_finished():
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[gd_resource type="EntitySpeciesData" load_steps=3 format=2]
|
[gd_resource type="EntitySpeciesData" load_steps=3 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://sprites/entities/Human/Body_2d_old.tscn" type="PackedScene" id=1]
|
[ext_resource path="res://sprites/characters/Character.tscn" type="PackedScene" id=1]
|
||||||
|
|
||||||
[sub_resource type="SpeciesModelData" id=1]
|
[sub_resource type="SpeciesModelData" id=1]
|
||||||
bone_structure = 4
|
bone_structure = 4
|
||||||
|
@ -38,14 +38,17 @@ func _ready():
|
|||||||
|
|
||||||
if player_path != null:
|
if player_path != null:
|
||||||
var player = get_node(player_path)
|
var player = get_node(player_path)
|
||||||
|
|
||||||
|
if !player:
|
||||||
|
return
|
||||||
|
|
||||||
for c in windows.get_children():
|
for c in windows.get_children():
|
||||||
if c.has_method("set_player"):
|
if c.has_method("set_player"):
|
||||||
c.set_player(player)
|
c.set_player(player.entity)
|
||||||
|
|
||||||
for c in gui_base.get_children():
|
for c in gui_base.get_children():
|
||||||
if c.has_method("set_player"):
|
if c.has_method("set_player"):
|
||||||
c.set_player(player)
|
c.set_player(player.entity)
|
||||||
|
|
||||||
func initialize():
|
func initialize():
|
||||||
gui_base = get_node(gui_base_path)
|
gui_base = get_node(gui_base_path)
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
[node name="GUILayer" type="CanvasLayer"]
|
[node name="GUILayer" type="CanvasLayer"]
|
||||||
script = ExtResource( 6 )
|
script = ExtResource( 6 )
|
||||||
|
player_path = ".."
|
||||||
gui_base_path = NodePath("GUI")
|
gui_base_path = NodePath("GUI")
|
||||||
buttons_path = NodePath("GUI/Buttons")
|
buttons_path = NodePath("GUI/Buttons")
|
||||||
windows_path = NodePath("GUI/Windows")
|
windows_path = NodePath("GUI/Windows")
|
||||||
|
Loading…
Reference in New Issue
Block a user