ajout de la porte et équilibrage des mutations
This commit is contained in:
@@ -9,76 +9,75 @@ var player : Player
|
||||
|
||||
|
||||
func instantiate_entity(s: PackedScene, entity_position : Vector2):
|
||||
var entity = s.instantiate() as Node2D
|
||||
var entity = s.instantiate() as Node2D
|
||||
|
||||
add_entity(entity, entity_position)
|
||||
add_entity(entity, entity_position)
|
||||
|
||||
entity.global_position = entity_position
|
||||
entity.global_position = entity_position
|
||||
|
||||
func add_entity(entity : Node2D, entity_global_position : Vector2 = Vector2.ZERO, container : Node2D = entity_container):
|
||||
if entity.get_parent():
|
||||
if entity.get_parent().get_parent() is Terrain:
|
||||
entity.get_parent().get_parent().remove_entity(entity)
|
||||
else:
|
||||
entity.get_parent().remove_child(entity)
|
||||
if entity.get_parent():
|
||||
if entity.get_parent().get_parent() is Terrain:
|
||||
entity.get_parent().get_parent().remove_entity(entity)
|
||||
else:
|
||||
entity.get_parent().remove_child(entity)
|
||||
|
||||
enroll_entity(entity)
|
||||
enroll_entity(entity)
|
||||
|
||||
container.add_child(entity)
|
||||
entity.global_position = entity_global_position
|
||||
container.add_child(entity)
|
||||
entity.global_position = entity_global_position
|
||||
|
||||
func enroll_entity(entity : Node2D):
|
||||
if "terrain" in entity:
|
||||
entity.terrain = self
|
||||
if "terrain" in entity:
|
||||
entity.terrain = self
|
||||
|
||||
if entity is Player:
|
||||
player = entity
|
||||
if entity is Player:
|
||||
player = entity
|
||||
|
||||
|
||||
func save_entities() -> Array[EntityData]:
|
||||
var saved_entities_data : Array[EntityData] = []
|
||||
for e in entity_container.get_children():
|
||||
if e is Entity:
|
||||
var saved_data : EntityData = e.save()
|
||||
if saved_data:
|
||||
saved_entities_data.append(saved_data)
|
||||
return saved_entities_data
|
||||
var saved_entities_data : Array[EntityData] = []
|
||||
for e in entity_container.get_children():
|
||||
if e is Entity:
|
||||
var saved_data : EntityData = e.save()
|
||||
if saved_data:
|
||||
saved_entities_data.append(saved_data)
|
||||
return saved_entities_data
|
||||
|
||||
func load_entities(saved_entities_data : Array[EntityData]):
|
||||
for static_entity in entity_container.get_children():
|
||||
enroll_entity(static_entity)
|
||||
for static_entity in entity_container.get_children():
|
||||
enroll_entity(static_entity)
|
||||
|
||||
for save_data in saved_entities_data:
|
||||
var entity = save_data.load_entity()
|
||||
if entity:
|
||||
add_entity(entity, save_data.position)
|
||||
for save_data in saved_entities_data:
|
||||
var entity = save_data.load_entity()
|
||||
if entity:
|
||||
add_entity(entity, save_data.position)
|
||||
|
||||
func remove_entity(e : Node2D, container : Node2D = entity_container):
|
||||
if e.get_parent() == entity_container:
|
||||
container.remove_child(e)
|
||||
if e.get_parent() == entity_container:
|
||||
container.remove_child(e)
|
||||
|
||||
func create_entity_container() -> Node2D:
|
||||
var container = Node2D.new()
|
||||
container.y_sort_enabled = true
|
||||
var container = Node2D.new()
|
||||
container.y_sort_enabled = true
|
||||
|
||||
add_child(container)
|
||||
add_child(container)
|
||||
|
||||
return container
|
||||
return container
|
||||
|
||||
func drop_item(item: Item, item_position : Vector2, random_displacement_factor = 0) -> ItemObject:
|
||||
var item_object = ItemObject.new(item)
|
||||
add_entity(item_object, item_position)
|
||||
var item_object = ItemObject.new(item)
|
||||
add_entity(item_object, item_position)
|
||||
|
||||
if random_displacement_factor:
|
||||
var displacement_direction = randf_range(0,2*PI)
|
||||
var displacement = Vector2.ONE.rotated(displacement_direction) * randf_range(0, random_displacement_factor)
|
||||
var tween : Tween = get_tree().create_tween()
|
||||
tween.tween_property(
|
||||
item_object,
|
||||
"position",
|
||||
item_object.position + displacement,
|
||||
0.2
|
||||
)
|
||||
|
||||
return item_object
|
||||
if random_displacement_factor:
|
||||
var displacement_direction = randf_range(0,2*PI)
|
||||
var displacement = Vector2.ONE.rotated(displacement_direction) * randf_range(0, random_displacement_factor)
|
||||
var tween : Tween = get_tree().create_tween()
|
||||
tween.tween_property(
|
||||
item_object,
|
||||
"position",
|
||||
item_object.position + displacement,
|
||||
0.2
|
||||
)
|
||||
|
||||
return item_object
|
||||
|
||||
Reference in New Issue
Block a user