Renamed assets, worked on the clock and map, started improving assets.

This commit is contained in:
2025-10-23 09:32:14 -04:00
parent 8811c851f9
commit 379fa4bd70
71 changed files with 747 additions and 513 deletions

View File

@@ -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

View File

@@ -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":"",

View File

@@ -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:

View File

@@ -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

View File

@@ -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:

View File

@@ -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
View 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
View File

@@ -0,0 +1 @@
uid://bhahhdhn3a7kr

View File

@@ -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

View File

@@ -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)

View File

@@ -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)