feat: ability to share dragons
This commit is contained in:
parent
3919df1805
commit
029ad6d45f
15 changed files with 203 additions and 30 deletions
|
@ -14,16 +14,17 @@ var _instantiator: DragonInstantiator
|
|||
var _save_load: SaveLoad
|
||||
var _library: DragonLibrary
|
||||
|
||||
var _dragon_entities: Dictionary = {}
|
||||
|
||||
|
||||
func _ready():
|
||||
_library = DragonLibrary.new(hat_outfits, shirt_outfits, shoes_outfits)
|
||||
_instantiator = DragonInstantiator.new(dragon_template, get_viewport(), get_window())
|
||||
|
||||
_save_load = SaveLoad.new()
|
||||
_load_game()
|
||||
|
||||
await get_tree().process_frame
|
||||
move_window_to_bottom_right()
|
||||
_load_game()
|
||||
|
||||
|
||||
func move_window_to_bottom_right():
|
||||
|
@ -42,39 +43,52 @@ func move_window_to_bottom_right():
|
|||
|
||||
func add_dragon(hat: Texture2D, shirt: Texture2D, shoes: Texture2D, dragon_name: String):
|
||||
# TODO: Check for free positon
|
||||
_instantiate_dragon_ingame(dragon_spots[0].position, hat, shirt, shoes, dragon_name)
|
||||
_library.add_dragon(dragon_name, hat, shirt, shoes)
|
||||
var id: int = _library.add_dragon(dragon_name, hat, shirt, shoes)
|
||||
_instantiate_dragon_ingame(dragon_spots[0].position, hat, shirt, shoes, dragon_name, id)
|
||||
|
||||
|
||||
func _load_game():
|
||||
_save_load.load()
|
||||
_library.add_dragons(_save_load.get_dragons())
|
||||
var dragons: Array = _save_load.get_dragons()
|
||||
_library.add_dragons(dragons)
|
||||
for d in dragons:
|
||||
if d['pos'] != Vector2i(0, 0):
|
||||
var hat: Texture2D = hat_outfits.get_texture(d['hat'])
|
||||
var shirt: Texture2D = shirt_outfits.get_texture(d['shirt'])
|
||||
var shoes: Texture2D = shoes_outfits.get_texture(d['shoes'])
|
||||
_pick_dragon(d['id'], d['pos'], hat, shirt, shoes, d['name'], false)
|
||||
print(_save_load.contents_to_save)
|
||||
|
||||
|
||||
func _instantiate_dragon_ingame(position: Vector2, hat: Texture2D, shirt: Texture2D, shoes: Texture2D, dragon_name: String):
|
||||
func _instantiate_dragon_ingame(position: Vector2, hat: Texture2D, shirt: Texture2D, shoes: Texture2D, dragon_name: String, id: int):
|
||||
var dragon: DragonEntity = dragon_ingame.instantiate()
|
||||
dragon.dress(hat, shirt, shoes)
|
||||
dragon.set_dragon_name(dragon_name)
|
||||
add_child(dragon)
|
||||
dragon.id = id
|
||||
dragon.position = position
|
||||
dragon.on_pick.connect(_pick_dragon)
|
||||
|
||||
|
||||
func _pick_dragon(position: Vector2, hat: Texture2D, shirt: Texture2D, shoes: Texture2D, dragon_name: String):
|
||||
var dragon: Dragon = _instantiator.instantiate(position, hat, shirt, shoes, dragon_name)
|
||||
func _pick_dragon(id: int, position: Vector2, hat: Texture2D, shirt: Texture2D, shoes: Texture2D, dragon_name: String, drag: bool = true):
|
||||
var dragon: Dragon = _instantiator.instantiate(position, hat, shirt, shoes, dragon_name, drag)
|
||||
dragon.id = id
|
||||
_dragon_entities[id] = dragon
|
||||
dragon.place_back.connect(_dragon_place_back)
|
||||
add_child(dragon)
|
||||
|
||||
|
||||
func _dragon_place_back(dragon: Dragon):
|
||||
print(dragon)
|
||||
_dragon_entities.erase(dragon.id)
|
||||
|
||||
|
||||
func _on_close_pressed() -> void:
|
||||
_save_load.clear_dragons()
|
||||
for d in _library.dragons:
|
||||
_save_load.add_dragon(d['name'], d['hat'], d['shirt'], d['shoes'])
|
||||
if _dragon_entities.has(d['id']) and _dragon_entities[d['id']] != null:
|
||||
_save_load.add_dragon(d['id'], d['name'], d['hat'], d['shirt'], d['shoes'], _dragon_entities[d['id']].position)
|
||||
else:
|
||||
_save_load.add_dragon(d['id'], d['name'], d['hat'], d['shirt'], d['shoes'], Vector2i(0, 0))
|
||||
_save_load.save()
|
||||
await get_tree().process_frame
|
||||
await get_tree().process_frame
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue