Renamed assets, worked on the clock and map, started improving assets.
This commit is contained in:
@@ -192,3 +192,32 @@ func generate_appearance(features=null) -> void:
|
||||
#appearance.eye_type = randi_range(0,len(job.portrait.eye_types) - 1)
|
||||
appearance.skin.color = AdventurerPortrait.random_color(ColorVariant.Types.SKIN)
|
||||
changed.emit()
|
||||
|
||||
func save_inventory() -> Dictionary:
|
||||
return {}
|
||||
|
||||
func save_equipment() -> Dictionary:
|
||||
return {}
|
||||
|
||||
func save() -> Dictionary:
|
||||
var dict = {}
|
||||
dict.name = [given_name, surname]
|
||||
dict.gender = gender
|
||||
dict.gold = gold
|
||||
if quest:
|
||||
dict.quest = quest.id
|
||||
dict.exp = exp
|
||||
dict.level = level
|
||||
dict.appearance = appearance.duplicate()
|
||||
dict.stats = stats.duplicate()
|
||||
dict.life = [life, max_life]
|
||||
dict.energy = [energy, max_energy]
|
||||
#TODO: Prepare for more on these later
|
||||
dict.job = {}
|
||||
dict.abilities = {}
|
||||
dict.inventory = save_inventory()
|
||||
dict.equipment = save_equipment()
|
||||
return dict
|
||||
|
||||
func load(dict : Dictionary) -> void:
|
||||
return
|
||||
|
||||
@@ -29,7 +29,7 @@ func set_appearance(appearance) -> void:
|
||||
set_color(ColorVariant.Types.EYES, appearance.eyes.color)
|
||||
#set_color(ColorVariant.Types.EYES, appearance.eyes.type)
|
||||
|
||||
func get_random_appearance() -> Dictionary:
|
||||
static func get_random_appearance() -> Dictionary:
|
||||
var app = {
|
||||
"hair":{
|
||||
"type":"",
|
||||
|
||||
@@ -5,12 +5,14 @@ var player : Player = null
|
||||
var panel : GamePanel = null
|
||||
var player_profile : Window = null
|
||||
var quest_log : QuestLog = null
|
||||
var top_menu : TopMenu = null
|
||||
var menu : GameMenu = null
|
||||
var open : bool = false
|
||||
var end_shift_confirmation : ConfirmationDialog
|
||||
var end_shift_confirm_template = preload("res://templates/end_shift_confirmation.tscn")
|
||||
var player_profile_template = preload("res://templates/player_profile_window.tscn")
|
||||
var last_screenshot : Image
|
||||
var shifts : Array[float] = []
|
||||
var current_shift = -1
|
||||
func _ready() -> void:
|
||||
player_data = Adventurer.new()
|
||||
Quest.load_quest_list()
|
||||
@@ -46,10 +48,14 @@ func toggle_player_profile():
|
||||
add_child(player_profile)
|
||||
player_profile.setup(player.data)
|
||||
|
||||
func start_shift(shift_num) -> void:
|
||||
current_shift = shift_num
|
||||
panel.reset_timer(shifts[shift_num])
|
||||
|
||||
func end_shift() -> void:
|
||||
take_screenshot()
|
||||
open = false
|
||||
open = !open
|
||||
start_shift(wrap(current_shift+1, 0, len(shifts)))
|
||||
if player_profile != null:
|
||||
toggle_player_profile()
|
||||
panel.switch_panel(open)
|
||||
@@ -66,7 +72,7 @@ func end_shift() -> void:
|
||||
#window.per
|
||||
Guild.hall.process_mode = Node.PROCESS_MODE_DISABLED
|
||||
Guild.hall.visible = false
|
||||
top_menu.hide()
|
||||
menu.hide()
|
||||
panel.get_parent().global_position = Vector2i(5,5)
|
||||
window.size = Vector2i(415,700)
|
||||
panel.populate_quest_views()
|
||||
@@ -86,26 +92,30 @@ func test_save() -> void:
|
||||
take_screenshot()
|
||||
var save_dict = {
|
||||
"savetime": Time.get_datetime_string_from_system(),
|
||||
"screenshot": last_screenshot
|
||||
"screenshot": last_screenshot.save_png_to_buffer().hex_encode()
|
||||
}
|
||||
#Save the guild data
|
||||
save_dict["guildname"] = Guild.name
|
||||
save_dict["guildlevel"] = Guild.level
|
||||
#Save the player data
|
||||
if player:
|
||||
save_dict["playername"] = player.data.full_name()
|
||||
save_dict["playerlevel"] = player.data.level
|
||||
save_dict.player = player.save()
|
||||
#Save the employee data
|
||||
#Save the adventurer data
|
||||
var members = Guild.save_members()
|
||||
if len(members) > 0:
|
||||
save_dict.members = members
|
||||
#Save the quest data
|
||||
#Save the quest progress
|
||||
var quests = Guild.save_quests()
|
||||
if len(quests) > 0:
|
||||
save_dict.quests = quests
|
||||
var save_file = FileAccess.open("user://savefile.save", FileAccess.WRITE)
|
||||
save_file.store_line(JSON.stringify(save_dict))
|
||||
save_file.store_line(JSON.stringify(save_dict, "\t"))
|
||||
|
||||
func get_savefile_data(filename : String) -> Dictionary:
|
||||
var load_file = FileAccess.open("user://" + filename, FileAccess.READ)
|
||||
var json = JSON.new()
|
||||
var json_string = load_file.get_line()
|
||||
var json_string = load_file.get_as_text()
|
||||
var parse_result = json.parse(json_string)
|
||||
if not parse_result == OK:
|
||||
printerr("JSON Parse Error: ", json.get_error_message(), " in ", json_string, " at line ", json.get_error_line())
|
||||
@@ -114,14 +124,7 @@ func get_savefile_data(filename : String) -> Dictionary:
|
||||
var ss : String = json.data.screenshot
|
||||
#print(ss.data)
|
||||
image.load_png_from_buffer(ss.hex_decode())
|
||||
var data_dict = {
|
||||
"playername": json.data.playername,
|
||||
"playerlevel": json.data.playerlevel,
|
||||
"guildname": json.data.guildname,
|
||||
"guildlevel": json.data.guildlevel,
|
||||
"savetime": json.data.savetime,
|
||||
"screenshot": image
|
||||
}
|
||||
var data_dict = json.data.duplicate_deep()
|
||||
return data_dict
|
||||
|
||||
func test_load(filename : String) -> void:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class_name TopMenu extends Control
|
||||
class_name GameMenu extends Control
|
||||
|
||||
const member_panel_entry_template = preload("res://templates/member_panel_entry.tscn")
|
||||
const quest_panel_entry_template = preload("res://templates/quest_panel_entry.tscn")
|
||||
@@ -9,7 +9,7 @@ const guild_info_window_template = preload("res://templates/guild_info_window.ts
|
||||
@onready var quest_list = %QuestList
|
||||
@onready var quests = %Quests
|
||||
func _ready() -> void:
|
||||
Game.top_menu = self
|
||||
Game.menu = self
|
||||
|
||||
func hide_submenus() -> void:
|
||||
members.visible = false
|
||||
@@ -40,7 +40,6 @@ func switch_panel(active : bool) -> void:
|
||||
%OpenShift.visible = active
|
||||
%WorkingShift.visible = !active
|
||||
%QuestView.visible = !active
|
||||
%Timer.start(300 if active else 1500)
|
||||
audioplayer.play()
|
||||
|
||||
func _on_show_quests_pressed() -> void:
|
||||
@@ -59,6 +58,11 @@ func connect_visitor_spawner(spawner : VisitorSpawner) -> void:
|
||||
func update_visitor_count(current : int, total : int) -> void:
|
||||
%OpenList/VisitorsLabel.text = "Visitors: %d/%d" % [current, total]
|
||||
|
||||
func reset_timer(time : float) -> void:
|
||||
timer.start(time)
|
||||
if timer.paused:
|
||||
timer.paused = false
|
||||
|
||||
func populate_quest_views() -> void:
|
||||
var count : int = 0
|
||||
for quest in Guild.quests:
|
||||
@@ -57,7 +57,7 @@ func _ready() -> void:
|
||||
|
||||
func register_guild_member(member : Adventurer, first : bool = false) -> void:
|
||||
members.append(member)
|
||||
Game.top_menu.add_member(member)
|
||||
Game.menu.add_member(member)
|
||||
changed.emit()
|
||||
if first:
|
||||
Game.notice("%s has joined the guild!" % member.name, 5)
|
||||
@@ -69,13 +69,25 @@ func has_guild_member(member : Adventurer) -> bool:
|
||||
|
||||
func add_quest(quest : Quest) -> void:
|
||||
quests[quest] = false
|
||||
Game.top_menu.add_quest(quest)
|
||||
Game.menu.add_quest(quest)
|
||||
#Game.quest_log.add_entry(quest)
|
||||
|
||||
func assign_quest(member : Adventurer, quest : Quest) -> void:
|
||||
member.assign_quest(quest)
|
||||
quests[quest] = true #Mark it as active
|
||||
|
||||
func save_members() -> Array:
|
||||
var array : Array[Dictionary] = []
|
||||
for member in members:
|
||||
array.append(member.save())
|
||||
return array
|
||||
|
||||
func save_quests() -> Array:
|
||||
var array : Array[Dictionary] = []
|
||||
for quest in quests:
|
||||
array.append(quest.save())
|
||||
return array
|
||||
|
||||
func spawn_visitor(pos : Vector2) -> void:
|
||||
var data : Adventurer = visitors["test"].data.instantiate()
|
||||
var sprite : AdventurerSprite = visitors["test"].sprite.instantiate()
|
||||
|
||||
26
scripts/map_cloud.gd
Normal file
26
scripts/map_cloud.gd
Normal file
@@ -0,0 +1,26 @@
|
||||
extends NinePatchRect
|
||||
|
||||
var max_displacement : float = 50
|
||||
var speed : float = 10
|
||||
var move_dir : Vector2
|
||||
var start_position : Vector2
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
start_position = position
|
||||
move_dir = Vector2.UP.rotated(randf() * 2 * PI)
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
var offset = (position - start_position).length() / max_displacement
|
||||
var turn = randf_range(-PI / 6.0, PI / 6.0) * offset
|
||||
var a_dir = move_dir.rotated(turn)
|
||||
var b_dir = move_dir.rotated(-turn)
|
||||
var ap = position + speed * delta * a_dir
|
||||
var bp = position + speed * delta * b_dir
|
||||
var mpsq = max_displacement * max_displacement
|
||||
if ap.distance_squared_to(start_position) < mpsq:
|
||||
position = ap
|
||||
move_dir = a_dir
|
||||
else:
|
||||
position = bp
|
||||
move_dir = b_dir
|
||||
1
scripts/map_cloud.gd.uid
Normal file
1
scripts/map_cloud.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bhahhdhn3a7kr
|
||||
@@ -83,3 +83,9 @@ func try_interact(obj : Interactable) -> void:
|
||||
|
||||
func interact(obj : Interactable) -> void:
|
||||
obj.interact(self)
|
||||
|
||||
func save() -> Dictionary:
|
||||
return data.save()
|
||||
|
||||
func load(dict : Dictionary) -> void:
|
||||
return
|
||||
|
||||
@@ -13,7 +13,7 @@ func _ready() -> void:
|
||||
if Game.player_data.appearance.size() != 0:
|
||||
appearance = Game.player_data.appearance
|
||||
else:
|
||||
appearance = portrait.get_random_appearance()
|
||||
appearance = AdventurerPortrait.get_random_appearance()
|
||||
portrait.set_appearance(appearance)
|
||||
choices.resize(portrait.option_sets.size())
|
||||
choices.fill(0)
|
||||
@@ -73,5 +73,5 @@ func _on_accept_button_pressed() -> void:
|
||||
|
||||
|
||||
func _on_random_button_pressed() -> void:
|
||||
appearance = portrait.get_random_appearance()
|
||||
appearance = AdventurerPortrait.get_random_appearance()
|
||||
portrait.set_appearance(appearance)
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
extends Node2D
|
||||
extends Node
|
||||
var test_adv = preload("res://templates/test_adventurer.tscn")
|
||||
var test_item = preload("res://data/items/pitchfork.tres")
|
||||
@onready var door_player : AudioStreamPlayer = $AudioStreamPlayer
|
||||
func _ready() -> void:
|
||||
Game.shifts = [600, 600, 600]
|
||||
Game.start_shift(0)
|
||||
#var adv : Adventurer = test_adv.instantiate() as Adventurer
|
||||
#Guild.register_guild_member(adv)
|
||||
var lst = Quest.list
|
||||
@@ -11,8 +13,10 @@ func _ready() -> void:
|
||||
Guild.add_quest(quest)
|
||||
Guild.assign_quest(Game.player.data, quest)
|
||||
var itm = test_item.duplicate()
|
||||
Game.player.data.appearance = AdventurerPortrait.get_random_appearance()
|
||||
Game.player.data.pickup_item(itm)
|
||||
Game.player.data.move_item(Vector2(0,0), Vector2(1,0))
|
||||
Game.open = true
|
||||
#Game.end_shift()
|
||||
#var tween = create_tween()
|
||||
#tween.tween_interval(3)
|
||||
|
||||
Reference in New Issue
Block a user