This commit is contained in:
2025-08-21 11:41:16 -04:00
parent a5d5a05369
commit 906f761041
103 changed files with 2670 additions and 250 deletions

View File

@@ -27,8 +27,11 @@ var job : JobData
var stats : StatBlock
var gold : int = 0
var quest : Quest
var weapon : Weapon
var armor : Armor
var accessory : Accessory
var inventory : Dictionary[Vector2, Item] = {}
var inventory_size : Vector2i = Vector2i(6,1)
func _init() -> void:
stats = StatBlock.new()

View File

@@ -32,17 +32,18 @@ func end_shift() -> void:
var window = get_window()
window.mode = Window.MODE_WINDOWED
var size = DisplayServer.screen_get_size()
window.content_scale_size = Vector2i(345,500)
window.content_scale_size = Vector2i(415,700)
var wsize = window.get_size_with_decorations()
window.position = Vector2i(size.x - 345, 25)
window.transparent = true
window.transparent_bg = true
DisplayServer.window_set_flag(DisplayServer.WINDOW_FLAG_BORDERLESS, true)
DisplayServer.window_set_flag(DisplayServer.WINDOW_FLAG_TRANSPARENT, true)
window.per
Guild.hall.process_mode = Node.PROCESS_MODE_DISABLED
top_menu.hide()
panel.get_parent().global_position = Vector2i(5,5)
window.size = Vector2i(345,500)
window.size = Vector2i(415,700)
panel.populate_quest_bars()
func notice(msg : String, time : float = 1) -> void:

14
scripts/item_slot.gd Normal file
View File

@@ -0,0 +1,14 @@
extends Control
var item_display_window_template = preload("res://templates/item_display_window.tscn")
var dragging : bool = false
var last_click : int = 0
func _on_gui_input(event: InputEvent) -> void:
var mmevt = event as InputEventMouseMotion
var mbevt = event as InputEventMouseButton
if mbevt and mbevt.button_index == MOUSE_BUTTON_MASK_LEFT:
if !mbevt.pressed:
if dragging and
#Press, drag, double click
pass # Replace with function body.

1
scripts/item_slot.gd.uid Normal file
View File

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

View File

@@ -6,6 +6,7 @@ const quest_progress_bar_template = preload("res://templates/quest_progress_bar.
signal time_changed(time : float)
@onready var timer : Timer = $Timer
@onready var audioplayer : AudioStreamPlayer = $AudioStreamPlayer
func _ready() -> void:
Game.panel = self
@@ -26,7 +27,9 @@ func add_quest_progress_bar(quest : Quest) -> void:
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:
%QuestProgressList.visible = !%QuestProgressList.visible
@@ -58,4 +61,22 @@ func notice(msg : String, time : float) -> void:
%Notices.add_child(ntc)
ntc.message = msg
ntc.duration = time
var dragging : bool = false
var drag_pos : Vector2
func _on_drag_region_gui_input(event: InputEvent) -> void:
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_LEFT:
dragging = event.pressed
if dragging:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
drag_pos = event.global_position
else:
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
Input.warp_mouse(drag_pos)
elif dragging and event is InputEventMouseMotion:
var window = get_window()
window.position += Vector2i(event.screen_relative)
func _on_quest_viewer_button_pressed() -> void:
%QuestView.visible = !%QuestView.visible

View File

@@ -1,6 +1,8 @@
extends Window
var dragging : bool = false
var data : AdventurerData
@onready var nameLabel = %NameLabel
@onready var jobLabel = %JobLabel
@onready var expLabel : Label = %ExpLabel
@onready var levelLabel :Label = %LevelLabel
@@ -17,7 +19,7 @@ var data : AdventurerData
func setup(adv : AdventurerData) -> void:
data = adv
title = data.full_name()
nameLabel.text = data.full_name()
if data.job:
jobLabel.text = data.job.name
else:
@@ -26,13 +28,22 @@ func setup(adv : AdventurerData) -> void:
expLabel.text = "Exp: %d/%d" % [data.exp, data.get_tnl()]
lifeLabel.text = "Life: " + str(data.life) + "/" + str(data.max_life)
energyLabel.text = "Energy: " + str(data.energy) + "/" + str(data.max_energy)
strLabel.text = "STR: " + str(data.stats.STR)
dexLabel.text = "DEX: " + str(data.stats.DEX)
intLabel.text = "INT: " + str(data.stats.INT)
chaLabel.text = "CHA: " + str(data.stats.CHA)
faiLabel.text = "FAI: " + str(data.stats.FAI)
lukLabel.text = "LUK: " + str(data.stats.LUK)
strLabel.text = str(data.stats.STR)
dexLabel.text = str(data.stats.DEX)
intLabel.text = str(data.stats.INT)
chaLabel.text = str(data.stats.CHA)
faiLabel.text = str(data.stats.FAI)
lukLabel.text = str(data.stats.LUK)
#TODO: Show equipment
func _on_close_requested() -> void:
queue_free()
func _on_drag_region_gui_input(event: InputEvent) -> void:
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_LEFT:
dragging = event.pressed
elif dragging and event is InputEventMouseMotion:
position += Vector2i(event.screen_relative)

View File

@@ -1 +1,5 @@
extends Window
func _on_close_button_pressed() -> void:
queue_free()

View File

@@ -22,8 +22,67 @@ class Event:
var time_elapsed
signal completed()
var participants : Array = []
var turn_queue : Array = []
var busy_list : Array = []
var dex_speed : int
func start_combat(adventurers : Array, enemies : Array) -> void:
participants = []
participants.append_array(adventurers)
participants.append_array(enemies)
var c_order : Array = []
var dex_speed = 0
for p in participants:
c_order.append([p, p.stats.dex])
if p.stats.dex > dex_speed:
dex_speed = p.stats.dex
c_order.sort_custom(func(a,b): return a[1] > b[1])
var delay = 5
var last_time = 0
for c in c_order:
var time = delay * dex_speed / c[1]
turn_queue.append({"combatant":c[0], "time": time - last_time})
last_time = time
func execute_attack(combatant, target) -> void:
busy_list.append(target)
#TODO: Make the combatant execute an attack
#TODO: Make the target take damage
func execute_action(combatant) -> void:
busy_list = [combatant]
#TODO: Come up with other options than just swinging at each other
var enemies : Array = get_enemy_list(combatant)
var target = enemies.pick_random()
execute_attack(combatant, target)
func get_enemy_list(combatant) -> Array:
var lst = []
for p in participants:
if p != combatant:
lst.append(p)
return lst
func resolve_combat() -> void:
pass
func process(delta : float) -> void:
#TODO: Make quest combat work
if type == Type.COMBAT:
if len(busy_list) < 1:
if len(turn_queue) > 0:
turn_queue[0].time -= delta
if turn_queue[0].time <= 0:
var c = turn_queue.pop_front()
if len(turn_queue) > 0:
turn_queue[0].time += c.time
execute_action(c.combatant)
else:
resolve_combat()
time_elapsed += delta
if time_elapsed >= time:
completed.emit()
@@ -74,6 +133,7 @@ func complete() -> void:
func num_events() -> int:
return len(events)
#TODO: Put in quest requirements
func is_eligible(member : AdventurerData) -> bool:
return !taken

View File

@@ -1,6 +1,6 @@
extends Node2D
var test_adv = preload("res://templates/test_adventurer.tscn")
@onready var door_player : AudioStreamPlayer = $AudioStreamPlayer
func _ready() -> void:
#var adv : AdventurerData = test_adv.instantiate() as AdventurerData
#Guild.register_guild_member(adv)
@@ -9,3 +9,14 @@ func _ready() -> void:
evt.time = 10
quest.events.append(evt)
Guild.add_quest(quest)
#var tween = create_tween()
#tween.tween_interval(3)
#tween.tween_callback(Callable($DoorLight/AnimationPlayer.play).bind("open"))
#tween.tween_callback(play_door)
#tween.tween_interval(.25)
#tween.tween_property(Game.player, "visible", true, 0)
#tween.tween_interval(.5)
#tween.tween_callback(Dialogic.start.bind("res://dialogic/timelines/intro.dtl"))
func play_door() -> void:
door_player.play()