Stuff
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
@@ -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
14
scripts/item_slot.gd
Normal 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
1
scripts/item_slot.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cw6yo5opbrpr8
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -1 +1,5 @@
|
||||
extends Window
|
||||
|
||||
|
||||
func _on_close_button_pressed() -> void:
|
||||
queue_free()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user