first commit, long overdue

deez
This commit is contained in:
martyTF 2025-11-22 21:04:34 +01:00
commit 54b9012a47
79 changed files with 2516 additions and 0 deletions

View file

@ -0,0 +1,99 @@
extends Node2D
var menu_item
var conf_mm
var conf_cat
var item_names = []
var item_proper_names = []
var categories
var pixel_x
var pixel_y
var ui_scale = 1
func _enter_tree() -> void:
conf_mm = ConfigFile.new()
conf_mm.load("res://02 - Configurations/campaign/main_menu.ini")
conf_cat = ConfigFile.new()
conf_cat.load("res://02 - Configurations/campaign/categories.ini")
print("main_menu:_enter_tree:1 " + str(conf_mm.get_sections()))
categories = []
pixel_x = get_viewport_rect().size[0]
pixel_y = get_viewport_rect().size[1]
if pixel_x + pixel_y > 2900:
ui_scale = 1
else:
ui_scale = 0.7
print("main_menu:_enter_tree:2 " + str(pixel_x) + " " + str(pixel_y))
for i in conf_mm.get_sections():
categories = categories + [i]
for i in categories:
#print(i)
var button = OptionButton.new()
button.text = conf_mm.get_value(i,"name")
button.name = i
button.custom_minimum_size = Vector2(320,64)
button.connect("item_selected",self.item_selected.bind(button))
button.allow_reselect = true
print("main_menu:_enter_tree:3 " + str(conf_mm.get_sections()))
for j in conf_mm.get_value(button.name,"items",[]):
item_names = item_names + [j]
item_proper_names = item_proper_names + [conf_cat.get_value(j,"name","")]
print("main_menu:_enter_tree:3 ")
button.add_item(conf_cat.get_value(j,"name",""))
%container.add_child(button)
set_menu_items()
func item_selected(k,tab):
print("main_menu:select_category:1 " + str(tab.get_item_text(k)))
menu_item = load("res://01 - Menus/02 - Selector/selector.tscn").instantiate()
print("main_menu:select_category:2 " + str(item_names))
menu_item.category = item_names[item_proper_names.find(tab.get_item_text(k))]
add_child(menu_item)
menu_item.set_menu_items(pixel_x,pixel_y,ui_scale)
func remove_tabs(tab):
remove_child.call_deferred(tab)
func _on_exit_button_up() -> void:
get_tree().quit()
func set_menu_items():
print("main_menu:set_menu_items:1 " + str(pixel_x) + " " + str(pixel_y))
%scroll.size.y = pixel_y - (256 * ui_scale)
%scroll.position.y = 128 * ui_scale
%campaign_manager.position.y = pixel_y - 192 * ui_scale
%exit.position.y = pixel_y - 96 * ui_scale
%ui_main_menu.size.y = pixel_y
%ui_background.size.y = pixel_y
%ui_background.size.x = pixel_x
if pixel_x < pixel_y: #mobile
%ui_main_menu.size.x = pixel_x
for i in [%scroll,%exit,%campaign_manager]:
i.scale = Vector2(ui_scale,ui_scale)
i.size.x = pixel_x/ui_scale - 128
i.position.x = 64*ui_scale
else:
%ui_main_menu.size.x = 512.0 * ui_scale
for i in [%scroll,%exit,%campaign_manager]:
i.scale = Vector2(ui_scale,ui_scale)
i.size.x = 448
i.position.x = 32 * ui_scale
func _process(_delta: float) -> void:
if pixel_x != get_viewport_rect().size[0] or pixel_y != get_viewport_rect().size[1]:
pixel_x = get_viewport_rect().size[0]
pixel_y = get_viewport_rect().size[1]
if pixel_x + pixel_y > 3000:
ui_scale = 1
else:
ui_scale = 0.7
if menu_item:
menu_item.set_menu_items(pixel_x,pixel_y,ui_scale)
set_menu_items()
func _on_campaign_manager_button_up() -> void:
var cm = load("res://01 - Menus/05 - Campaign Manager/campaign_manager.tscn").instantiate()
add_child(cm)

View file

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

View file

@ -0,0 +1,99 @@
extends Node2D
var menu_item
var conf_mm
var conf_cat
var item_names = []
var item_proper_names = []
var categories
var pixel_x
var pixel_y
var ui_scale = 1
func _enter_tree() -> void:
conf_mm = ConfigFile.new()
conf_mm.load("res://02 - Configurations/campaign/main_menu.ini")
conf_cat = ConfigFile.new()
conf_cat.load("res://02 - Configurations/campaign/categories.ini")
print("main_menu:_enter_tree:1 " + str(conf_mm.get_sections()))
categories = []
pixel_x = get_viewport_rect().size[0]
pixel_y = get_viewport_rect().size[1]
if pixel_x + pixel_y > 2900:
ui_scale = 1
else:
ui_scale = 0.7
print("main_menu:_enter_tree:2 " + str(pixel_x) + " " + str(pixel_y))
for i in conf_mm.get_sections():
categories = categories + [i]
for i in categories:
#print(i)
var button = OptionButton.new()
button.text = conf_mm.get_value(i,"name")
button.name = i
button.custom_minimum_size = Vector2(320,64)
button.connect("item_selected",self.item_selected.bind(button))
button.allow_reselect = true
print("main_menu:_enter_tree:3 " + str(conf_mm.get_sections()))
for j in conf_mm.get_value(button.name,"items",[]):
item_names = item_names + [j]
item_proper_names = item_proper_names + [conf_cat.get_value(j,"name","")]
print("main_menu:_enter_tree:3 ")
button.add_item(conf_cat.get_value(j,"name",""))
%container.add_child(button)
set_menu_items()
func item_selected(k,tab):
print("main_menu:select_category:1 " + str(tab.get_item_text(k)))
menu_item = load("res://01 - Menus/02 - Selector/selector.tscn").instantiate()
print("main_menu:select_category:2 " + str(item_names))
menu_item.category = item_names[item_proper_names.find(tab.get_item_text(k))]
add_child(menu_item)
remove_child.call_deferred(tab)
func remove_tabs(tab):
remove_child.call_deferred(tab)
func _on_exit_button_up() -> void:
get_tree().quit()
func set_menu_items():
print("main_menu:set_menu_items:1 " + str(pixel_x) + " " + str(pixel_y))
%scroll.size.y = pixel_y - (400 * ui_scale)
%scroll.position.y = 128 * ui_scale
%campaign_manager.position.y = pixel_y - 192 * ui_scale
%exit.position.y = pixel_y - 96 * ui_scale
%ui_main_menu.size.y = pixel_y
%ui_background.size.y = pixel_y
%ui_background.size.x = pixel_x
if pixel_x < pixel_y: #mobile
%ui_main_menu.size.x = pixel_x
for i in [%scroll,%exit,%campaign_manager]:
i.scale = Vector2(ui_scale,ui_scale)
i.size.x = (pixel_x)/ui_scale -128
i.position.x = 64
else:
%ui_main_menu.size.x = 512.0 * ui_scale
for i in [%scroll,%exit,%campaign_manager]:
i.scale = Vector2(ui_scale,ui_scale)
i.size.x = 448
i.position.x = 32 * ui_scale
func _process(_delta: float) -> void:
if pixel_x != get_viewport_rect().size[0] or pixel_y != get_viewport_rect().size[1]:
pixel_x = get_viewport_rect().size[0]
pixel_y = get_viewport_rect().size[1]
if pixel_x + pixel_y > 3000:
ui_scale = 1
else:
ui_scale = 0.7
if menu_item:
menu_item.set_menu_items(pixel_x,pixel_y,ui_scale)
set_menu_items()
func _on_campaign_manager_button_up() -> void:
var cm = load("res://01 - Menus/05 - Campaign Manager/campaign_manager.tscn").instantiate()
add_child(cm)

View file

@ -0,0 +1 @@
uid://4isse2tc5gjs

View file

@ -0,0 +1,50 @@
[gd_scene load_steps=2 format=3 uid="uid://c1qk762funu8g"]
[ext_resource type="Script" uid="uid://ciorv2qbkgxpl" path="res://01 - Menus/01 - Main Menu/main_menu.gd" id="1_6vrvy"]
[node name="main_menu" type="Node2D"]
script = ExtResource("1_6vrvy")
[node name="ui_main_menu" type="ColorRect" parent="."]
unique_name_in_owner = true
offset_right = 512.0
offset_bottom = 1440.0
color = Color(0.047058824, 0.07058824, 0.09803922, 1)
[node name="ui_background" type="ColorRect" parent="."]
unique_name_in_owner = true
offset_right = 2564.0
offset_bottom = 1440.0
color = Color(0.047058824, 0.07058824, 0.09803922, 0.78431374)
[node name="exit" type="Button" parent="."]
unique_name_in_owner = true
offset_left = 96.0
offset_top = 1280.0
offset_right = 416.0
offset_bottom = 1344.0
text = "Exit"
[node name="campaign_manager" type="Button" parent="."]
unique_name_in_owner = true
offset_left = 96.0
offset_top = 1184.0
offset_right = 416.0
offset_bottom = 1248.0
text = "Campaign Manager"
[node name="scroll" type="ScrollContainer" parent="."]
unique_name_in_owner = true
offset_left = 32.0
offset_top = 192.0
offset_right = 480.0
offset_bottom = 1152.0
[node name="container" type="VBoxContainer" parent="scroll"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[connection signal="button_up" from="exit" to="." method="_on_exit_button_up"]
[connection signal="button_up" from="campaign_manager" to="." method="_on_campaign_manager_button_up"]

View file

@ -0,0 +1,152 @@
extends Node2D
var category
var item
var item_filter = ""
var config
var ini
var sheet
var sort = "alphabetically"
func _enter_tree() -> void:
ini = "res://02 - Configurations/" + category + ".ini"
%new_item_name.visible = false
%delete.visible = false
%item_name.visible = false
%save.visible = false
%new_item.text = "New " + category
%filter.placeholder_text = "Filter " + category
%new_item_name.placeholder_text = "Set " + category + " name"
%save.text = "Save " + category
#print(category)
list_items()
func _on_close_button_up() -> void:
queue_free()
func list_items() -> void:
config = ConfigFile.new()
config.load(ini)
print(ini)
var k = config.get_sections()
if sort == "alphabetically":
k.sort()
#print(str(k))
var i = 0
%list.item_count = k.size()
#print(str(%list.item_count))
for j in k:
if item_filter == "":
%list.set_item_text(i,str(j))
i = i+1
elif item_filter.to_lower() in j.to_lower():
%list.set_item_text(i,str(j))
i = i+1
#print(j)
else:
%list.item_count = %list.item_count -1
#print(str(%list.item_count))
func refresh_view():
%item_name.text = item
if item != "":
config = ConfigFile.new()
config.load(ini)
%save.visible = false
func _on_list_item_selected(index: int) -> void:
item = %list.get_item_text(index)
#print(%list.get_item_text(index))
%delete.text = "Delete " + %list.get_item_text(index)
%delete.visible = true
%item_name.visible = true
if sheet:
remove_child(sheet)
sheet = load("res://01 - Menus/03 - Sheets/item.tscn").instantiate()
sheet.item = item
sheet.category = category
sheet.position.x = 512
sheet.position.y = 256
add_child(sheet)
refresh_view()
func _on_filter_text_changed(new_text: String) -> void:
item_filter = new_text
#print(str(%list.get_selected_items()))
list_items()
if %list.item_count == 1:
%list.select(0)
else:
%list.select(0)
%list.deselect(0)
func _on_new_item_button_up() -> void:
%new_item_name.visible = true
%new_item_name.grab_focus()
func _on_new_item_name_text_submitted(new_text: String) -> void:
config = ConfigFile.new()
item = new_text
config.load(ini)
config.set_value(item,"type",category)
config.save(ini)
%new_item_name.text = ""
%new_item_name.visible = false
# sheet.save()
refresh_view()
list_items()
func _on_new_item_name_editing_toggled(toggled_on: bool) -> void:
if !toggled_on:
%new_item_name.text = ""
%new_item_name.visible = false
func _on_delete_button_up() -> void:
config = ConfigFile.new()
config.load(ini)
config.erase_section(item)
config.save(ini)
list_items()
item = ""
%delete.visible = false
%item_name.visible = false
remove_child(sheet)
refresh_view()
func _on_save_button_up() -> void:
sheet.save()
%save.visible = false
func show_save():
%save.visible = true
func set_menu_items(pixel_x,pixel_y,ui_scale):
%ui_background.size.y = pixel_y
%close.position.y = pixel_y - 96 * ui_scale
%new_item.position.y = pixel_y - 192 * ui_scale
%new_item_name.position.y = pixel_y - 192 * ui_scale
%delete.position.y = pixel_y - 286 * ui_scale
%filter.position.y = pixel_y - 384 * ui_scale
%list.position = (Vector2(128,128)) * ui_scale
%list.size.y = pixel_y/ui_scale - 620
if pixel_x < pixel_y: #mobile
%ui_background.size.x = pixel_x
for i in [%close,%new_item,%filter,%delete,%save,%new_item_name,%list]:
i.scale = Vector2(ui_scale,ui_scale)
i.size.x = pixel_x/ui_scale - 128
i.position.x = 64 * ui_scale
else:
%ui_background.size.x = 512.0 * ui_scale
for i in [%close,%new_item,%filter,%delete,%save,%new_item_name,%list]:
i.scale = Vector2(ui_scale,ui_scale)
i.size.x = 448
i.position.x = 32 * ui_scale

View file

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

View file

@ -0,0 +1,96 @@
[gd_scene load_steps=2 format=3 uid="uid://cefrjogovj4ql"]
[ext_resource type="Script" uid="uid://c7qgo02sbv7wl" path="res://01 - Menus/02 - Selector/selector.gd" id="1_03gsk"]
[node name="selector" type="Node2D"]
script = ExtResource("1_03gsk")
[node name="background" type="Node2D" parent="."]
[node name="ui_background" type="ColorRect" parent="background"]
unique_name_in_owner = true
offset_right = 512.0
offset_bottom = 1440.0
color = Color(0.047058824, 0.07058824, 0.09803922, 1)
[node name="close" type="Button" parent="."]
unique_name_in_owner = true
offset_left = 96.0
offset_top = 1280.0
offset_right = 416.0
offset_bottom = 1344.0
text = "Close"
[node name="new_item" type="Button" parent="."]
unique_name_in_owner = true
offset_left = 96.0
offset_top = 1184.0
offset_right = 416.0
offset_bottom = 1248.0
text = "New Item
"
[node name="new_item_name" type="LineEdit" parent="."]
unique_name_in_owner = true
offset_left = 40.0
offset_top = 1184.0
offset_right = 490.0
offset_bottom = 1248.0
placeholder_text = "Set Item Name"
[node name="filter" type="LineEdit" parent="."]
unique_name_in_owner = true
offset_left = 96.0
offset_top = 992.0
offset_right = 432.0
offset_bottom = 1056.0
placeholder_text = "Filter Items"
[node name="list" type="ItemList" parent="."]
unique_name_in_owner = true
clip_contents = false
offset_left = 64.0
offset_top = 100.0
offset_right = 448.0
offset_bottom = 832.0
allow_reselect = true
item_count = 2
item_0/text = "Item A"
item_1/text = "Item B"
[node name="delete" type="Button" parent="."]
unique_name_in_owner = true
offset_left = 96.0
offset_top = 1088.0
offset_right = 416.0
offset_bottom = 1152.0
text = "Delete Item"
[node name="save" type="Button" parent="."]
unique_name_in_owner = true
offset_left = 96.0
offset_top = 896.0
offset_right = 416.0
offset_bottom = 960.0
text = "Save Item"
[node name="item_name" type="Label" parent="."]
unique_name_in_owner = true
offset_left = 1280.0
offset_top = 96.0
offset_right = 1920.0
offset_bottom = 170.0
theme_override_font_sizes/font_size = 50
text = "Item Name"
horizontal_alignment = 1
[node name="HTTPRequest" type="HTTPRequest" parent="."]
[connection signal="button_up" from="close" to="." method="_on_close_button_up"]
[connection signal="button_up" from="new_item" to="." method="_on_new_item_button_up"]
[connection signal="editing_toggled" from="new_item_name" to="." method="_on_new_item_name_editing_toggled"]
[connection signal="text_submitted" from="new_item_name" to="." method="_on_new_item_name_text_submitted"]
[connection signal="text_changed" from="filter" to="." method="_on_filter_text_changed"]
[connection signal="item_selected" from="list" to="." method="_on_list_item_selected"]
[connection signal="button_up" from="delete" to="." method="_on_delete_button_up"]
[connection signal="button_up" from="save" to="." method="_on_save_button_up"]

View file

@ -0,0 +1,74 @@
extends Node2D
var item # e.g. grondir
var category # e.g. character
var module
var module_type
var active_module
var module_self:String
var modules_list:Array
var modules_text:Array
var modules_skill:Array
var config
func _enter_tree() -> void:
print("item:_enter_tree:1 " + category)
config = ConfigFile.new()
config.load("res://02 - Configurations/campaign/categories.ini")
module_self = config.get_value(category,"module","")
var modules_all = [module_self]
for i in config.get_section_keys(category):
print("item:_enter_tree:2 " + i)
if i.contains("modules_"):
modules_all = modules_all + config.get_value(category,i,[])
print("item:_enter_tree:3 " + str(modules_all))
var j = 0
for i in modules_all:
var button = Button.new()
button.tooltip_text = i
if i == category:
button.text = config.get_value(i,"name_self","")
else:
button.text = config.get_value(i,"name","")
button.size.x = 192
button.size.y = 64
button.connect("button_up",spawn_module.bind(button.get_tooltip_text()))
%container.add_child(button)
j = j + 1
spawn_module(category)
func spawn_module(text):
print("item:spawn_module:1 " + text)
remove_child(module)
active_module = text
config = ConfigFile.new()
config.load("res://02 - Configurations/campaign/categories.ini")
for i in config.get_section_keys(category):
print("item:spawn_module:2 " + i)
if i == "module" and category == text:
print("item:spawn_module:3 " + text)
module = load("res://01 - Menus/04 - Modules/modules_" + config.get_value(text,i,"") + ".tscn").instantiate()
module.item = item
module.category = category
module.module = active_module
module.position.x = 384
add_child.call_deferred(module)
elif i.contains("modules_"):
print("item:spawn_module:4 is array" )
if config.get_value(category,i,[]).has(text):
print("item:spawn_module:5 " + i)
module = load("res://01 - Menus/04 - Modules/" + i + ".tscn").instantiate()
module.item = item
module.category = category
module.module = active_module
module.position.x = 384
add_child.call_deferred(module)
func show_save():
pass
func save():
module.save()

View file

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

View file

@ -0,0 +1,25 @@
[gd_scene load_steps=2 format=3 uid="uid://cl4squ3cegosj"]
[ext_resource type="Script" uid="uid://d1ixiojxt27x7" path="res://01 - Menus/03 - Sheets/item.gd" id="1_sscaq"]
[node name="item" type="Node2D"]
script = ExtResource("1_sscaq")
[node name="tabs" type="ColorRect" parent="."]
offset_top = -256.0
offset_right = 384.0
offset_bottom = 1184.0
color = Color(0.047058824, 0.07058824, 0.09803922, 1)
[node name="scroll" type="ScrollContainer" parent="."]
clip_contents = false
offset_left = 64.0
offset_top = 64.0
offset_right = 320.0
offset_bottom = 960.0
[node name="container" type="VBoxContainer" parent="scroll"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3

View file

@ -0,0 +1,5 @@
extends Control
var item # e.g. grondir
var category # e.g. characters
var module # e.g. trait

View file

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

View file

@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://bf5jf67m66141"]
[ext_resource type="Script" uid="uid://cj7dq6bxffndm" path="res://01 - Menus/04 - Modules/modules_.gd" id="1_xh6yg"]
[node name="modules_" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_xh6yg")

View file

@ -0,0 +1,5 @@
extends Control
var item # e.g. grondir
var category # e.g. characters
var module # e.g. trait

View file

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

View file

@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://ifmshoyijckd"]
[ext_resource type="Script" uid="uid://b0g20c0f26vke" path="res://01 - Menus/04 - Modules/modules_character.gd" id="1_ooaol"]
[node name="character" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_ooaol")

View file

@ -0,0 +1,171 @@
extends Control
var item # e.g. grondir
var category # e.g. characters
var module # e.g. trait
var items = [] # e.g. ["Undergrounder","Tough"]
var ini
var config
var item_filter = ""
var suggestions
var suggestion = ""
var overview
var rec_helper = []
var selected = ""
var items_list:Array = []
func _enter_tree() -> void:
config = ConfigFile.new()
config.load("res://02 - Configurations/campaign/categories.ini")
rec_helper = config.get_value(category,"modules_list",[])
items = []
#print(str(category))
#print(str(module))
#print(str(items))
custom_minimum_size.y = 512
%filter.placeholder_text = "Filter " + module
%new_item.text = "Add " + module
%new_item_name.visible = false
%suggestions_background.visible = false
%new_item_suggestions.visible = false
ini = "res://02 - Configurations/" + category + ".ini"
list_items()
func list_items():
config = ConfigFile.new()
config.load(ini)
print("modules_list:list_items:1 " + category)
items = []
%list.item_count = 0
for i in rec_helper:
print("")
rec(i,category,item)
#print(str(%list.item_count))
pass
func rec(i,conf,k):
var conff = "res://02 - Configurations/" + conf + ".ini"
config = ConfigFile.new()
config.load(conff)
print("modules_list:rec:1 conff = " + conff)
print("modules_list:rec:2 sections = " + str(config.get_section_keys(k)))
print("modules_list:rec:3 k = " + str(k))
print("modules_list:rec:4 i = " + str(i))
if config.get_section_keys(k).has(i):
var m = config.get_value(k,i)
print("modules_list:rec:5 " + (k) + " has " + str(m) + " as " + str(i))
if module == i:
print("modules_list:rec:6 " + str(items))
for b in config.get_value(k,i,[]):
print("modules_list:rec:10 " + str(b) + str(items))
if not items.has(b) and b != "":
items = items + [b]
print("modules_list:rec:11 adding " + b + " to list")
if item_filter == "":
%list.add_item(str(b))
%list.set_item_tooltip(%list.item_count - 1, k)
if conf != category:
%list.set_item_custom_bg_color(%list.item_count - 1,"black")
elif item_filter.to_lower() in b.to_lower():
%list.add_item(str(b))
else:
%list.item_count = %list.item_count -1
print("modules_list:rec:12 " + i + " " + str(category))
if i != category:
print("modules_list:rec:7 " + str(rec_helper.slice(rec_helper.find(i),-1)))
print("modules_list:rec:8 " + str(m))
for o in rec_helper.slice(rec_helper.find(i),rec_helper.size()):
print(str(o))
for j in m:
print("modules_list:rec:9 rec " + o + " - " + i + " - " + j)
rec(o,i,j)
func _on_filter_text_changed(new_text: String) -> void:
item_filter = new_text
list_items()
func _on_new_item_button_up() -> void:
%new_item_name.visible = true
%suggestions_background.visible = true
%new_item_suggestions.visible = true
%new_item_name.grab_focus()
list_suggestions()
func _on_new_item_name_editing_toggled(toggled_on: bool) -> void:
if !toggled_on:
%new_item_name.text = ""
%new_item_name.visible = false
%suggestions_background.visible = false
await get_tree().create_timer(0.001).timeout
%new_item_suggestions.visible = false
func list_suggestions():
config = ConfigFile.new()
config.load("res://02 - Configurations/" + module + ".ini")
var i = 0
suggestions = config.get_sections()
#print(str(suggestions))
%new_item_suggestions.item_count = suggestions.size()
#print(str(%new_item_suggestions.item_count))
for j in suggestions:
if suggestion == "":
%new_item_suggestions.set_item_text(i,str(j))
i = i+1
elif suggestion.to_lower() in j.to_lower():
%new_item_suggestions.set_item_text(i,str(j))
i = i+1
#print(j)
else:
%new_item_suggestions.item_count = %new_item_suggestions.item_count -1
#print(str(%list.item_count))
pass
func _on_new_item_name_text_changed(new_text: String) -> void:
suggestion = new_text
list_suggestions()
func _on_new_item_suggestions_item_selected(index: int) -> void:
config = ConfigFile.new()
config.load(ini)
if not items.has(%new_item_suggestions.get_item_text(index)):
print(str(items))
var i = config.get_value(item,module,[]) + [%new_item_suggestions.get_item_text(index)]
print(str(i))
config.set_value(item,module,i)
config.save(ini)
list_items()
func _on_list_item_selected(index: int) -> void:
if overview:
remove_child(overview)
print(module)
config = ConfigFile.new()
config.load("res://02 - Configurations/campaign/categories.ini")
var submodule = config.get_value(module,"module","")
overview = load("res://01 - Menus/04 - Modules/modules_" + submodule + ".tscn").instantiate()
overview.position.x = 448
overview.scale.x = 0.8
overview.scale.y = 0.8
overview.category = module
overview.item = %list.get_item_text(index)
overview.mouse_filter = 2
selected = %list.get_item_text(index)
add_child(overview)
func _on_delete_button_up() -> void:
config = ConfigFile.new()
config.load(ini)
print(str(items))
var j = config.get_value(category,item,[])
j.remove_at(config.get_value(category,item,[]).find(selected))
config.set_value(item,module,j)
config.save(ini)
list_items()

View file

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

View file

@ -0,0 +1,88 @@
[gd_scene load_steps=2 format=3 uid="uid://uo4yu1gwxcec"]
[ext_resource type="Script" uid="uid://bswsmlukpn7x4" path="res://01 - Menus/04 - Modules/modules_list.gd" id="1_15vp0"]
[node name="list" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_15vp0")
[node name="background" type="ColorRect" parent="."]
unique_name_in_owner = true
layout_mode = 0
offset_right = 448.0
offset_bottom = 1024.0
color = Color(0.047058824, 0.07058824, 0.09803922, 1)
[node name="suggestions_background" type="ColorRect" parent="."]
unique_name_in_owner = true
z_index = 1
layout_mode = 0
offset_left = -64.0
offset_top = 192.0
offset_right = 512.0
offset_bottom = 872.0
color = Color(0.047058824, 0.07058824, 0.09803922, 1)
[node name="list" type="ItemList" parent="."]
unique_name_in_owner = true
clip_contents = false
layout_mode = 0
offset_left = 32.0
offset_top = 32.0
offset_right = 416.0
offset_bottom = 672.0
[node name="filter" type="LineEdit" parent="."]
unique_name_in_owner = true
layout_mode = 0
offset_left = 64.0
offset_top = 896.0
offset_right = 384.0
offset_bottom = 960.0
placeholder_text = "Filter item"
[node name="new_item" type="Button" parent="."]
unique_name_in_owner = true
layout_mode = 0
offset_left = 64.0
offset_top = 800.0
offset_right = 384.0
offset_bottom = 864.0
text = "Add item"
[node name="new_item_name" type="LineEdit" parent="."]
unique_name_in_owner = true
z_index = 1
layout_mode = 0
offset_top = 208.0
offset_right = 448.0
offset_bottom = 272.0
placeholder_text = "Set Item Name"
[node name="new_item_suggestions" type="ItemList" parent="."]
unique_name_in_owner = true
z_index = 1
layout_mode = 0
offset_left = -48.0
offset_top = 272.0
offset_right = 496.0
offset_bottom = 856.0
allow_reselect = true
[node name="delete" type="Button" parent="."]
unique_name_in_owner = true
layout_mode = 0
offset_left = 64.0
offset_top = 704.0
offset_right = 384.0
offset_bottom = 768.0
text = "Delete"
[connection signal="item_selected" from="list" to="." method="_on_list_item_selected"]
[connection signal="text_changed" from="filter" to="." method="_on_filter_text_changed"]
[connection signal="button_up" from="new_item" to="." method="_on_new_item_button_up"]
[connection signal="editing_toggled" from="new_item_name" to="." method="_on_new_item_name_editing_toggled"]
[connection signal="text_changed" from="new_item_name" to="." method="_on_new_item_name_text_changed"]
[connection signal="item_selected" from="new_item_suggestions" to="." method="_on_new_item_suggestions_item_selected"]
[connection signal="button_up" from="delete" to="." method="_on_delete_button_up"]

View file

@ -0,0 +1,6 @@
extends Control
var item # e.g. grondir
var category # e.g. characters
var module # e.g. trait
var items = [] # e.g. ["Undergrounder","Tough"]

View file

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

View file

@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://cynrv7v87br4g"]
[ext_resource type="Script" uid="uid://c50oko0aci1t8" path="res://01 - Menus/04 - Modules/modules_location.gd" id="1_08287"]
[node name="modules_location" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_08287")

View file

@ -0,0 +1,7 @@
extends Control
var item # e.g. grondir
var category # e.g. character
var module # e.g. trait
var items # e.g. ["Undergrounder","Tough"]

View file

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

View file

@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://beaslpqen8eqr"]
[ext_resource type="Script" uid="uid://bsni2icpr5xpg" path="res://01 - Menus/04 - Modules/modifier.gd" id="1_7leb1"]
[node name="modifier" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_7leb1")

View file

@ -0,0 +1,123 @@
extends Control
var item # e.g. grondir
var category # e.g. character
var module # e.g. trait
var items # e.g. ["Undergrounder","Tough"]
var cost:Array = [0,0,0,0]
var difficulty:int = 0
var action:String = ""
var success:String = ""
var failure:String = ""
var duration:int = 0
var ends_on:int = 0
var target:Array = []
var stat:Array = []
var challenge:String = ""
var config = ConfigFile.new()
var item_filter = ""
var targets1 = ""
func _enter_tree() -> void:
config = ConfigFile.new()
config.load("res://02 - Configurations/" + category + ".ini")
#print(str(config.get_value(item,"cost")))
cost = config.get_value(item,"cost",[0,0,0,0])
difficulty = config.get_value(item,"difficulty",0)
action = config.get_value(item,"action","")
success = config.get_value(item,"success","")
failure = config.get_value(item,"failure","")
duration = config.get_value(item,"duration",0)
ends_on = config.get_value(item,"ends_on",0)
target = config.get_value(item,"target",[""])
stat = config.get_value(item,"stat",[""])
var j = 0
for i in %cost.get_children():
i.text = str(cost[j])
j = j + 1
%difficulty.text = str(difficulty)
%action.text = action
%success.text = success
%failure.text = failure
%duration.text = str(duration)
%ends_on.select(ends_on)
%target.item_count = 0
for i in target:
%target.add_item(i)
config = ConfigFile.new()
config.load("res://02 - Configurations/stat.ini")
for i in stat:
%stat.add_item(i)
func _on_body_text_changed(new_text: String) -> void:
cost[0] = int(new_text)
print(str(cost))
get_parent().get_parent().show_save()
func _on_communication_text_changed(new_text: String) -> void:
cost[1] = int(new_text)
get_parent().get_parent().show_save()
func _on_mind_text_changed(new_text: String) -> void:
cost[2] = int(new_text)
get_parent().get_parent().show_save()
func _on_soul_text_changed(new_text: String) -> void:
cost[3] = int(new_text)
get_parent().get_parent().show_save()
func save():
config = ConfigFile.new()
config.load("res://02 - Configurations/" + category + ".ini")
config.set_value(item,"cost",cost)
config.set_value(item,"difficulty",difficulty)
config.set_value(item,"action",action)
config.set_value(item,"success",success)
config.set_value(item,"failure",failure)
config.set_value(item,"duration",duration)
config.set_value(item,"ends_on",ends_on)
config.set_value(item,"target",target)
config.set_value(item,"stat",stat)
config.save("res://02 - Configurations/" + category + ".ini")
%http.request("https://ttrpg.marty.tf/hi2/",["Content-Type: application/json"],HTTPClient.METHOD_PUT,"hi2")
func _on_difficulty_text_changed(new_text: String) -> void:
difficulty = int(new_text)
get_parent().get_parent().show_save()
func _on_action_text_changed() -> void:
action = %action.text
get_parent().get_parent().show_save()
func _on_success_text_changed() -> void:
success = %success.text
get_parent().get_parent().show_save()
func _on_failure_text_changed() -> void:
failure = %failure.text
get_parent().get_parent().show_save()
func _on_duration_text_changed(new_text) -> void:
duration = int(new_text)
print(str(duration))
get_parent().get_parent().show_save()
func _on_ends_on_item_selected(index: int) -> void:
ends_on = index
get_parent().get_parent().show_save()
func _on_http_request_completed(result: int, response_code: int, headers: PackedStringArray, body: PackedByteArray) -> void:
print(str(response_code))

View file

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

View file

@ -0,0 +1,177 @@
[gd_scene load_steps=2 format=3 uid="uid://wvtkpsevhva0"]
[ext_resource type="Script" uid="uid://cy7cil87c8jlm" path="res://01 - Menus/04 - Modules/modules_skill.gd" id="1_5eik8"]
[node name="skill" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_5eik8")
[node name="ColorRect" type="ColorRect" parent="."]
visible = false
layout_mode = 0
offset_right = 1408.0
offset_bottom = 1280.0
[node name="cost" type="Node2D" parent="."]
unique_name_in_owner = true
[node name="body" type="LineEdit" parent="cost"]
unique_name_in_owner = true
offset_left = 64.0
offset_top = 64.0
offset_right = 206.0
offset_bottom = 128.0
theme_override_colors/font_color = Color(0.8509804, 0.29411766, 0.29411766, 1)
placeholder_text = "body"
[node name="communication" type="LineEdit" parent="cost"]
unique_name_in_owner = true
offset_left = 256.0
offset_top = 64.0
offset_right = 398.0
offset_bottom = 128.0
placeholder_text = "communication"
[node name="mind" type="LineEdit" parent="cost"]
unique_name_in_owner = true
offset_left = 64.0
offset_top = 160.0
offset_right = 206.0
offset_bottom = 224.0
placeholder_text = "mind"
[node name="soul" type="LineEdit" parent="cost"]
unique_name_in_owner = true
offset_left = 256.0
offset_top = 160.0
offset_right = 398.0
offset_bottom = 224.0
placeholder_text = "soul"
[node name="action" type="TextEdit" parent="."]
unique_name_in_owner = true
clip_contents = false
layout_mode = 0
offset_left = 64.0
offset_top = 320.0
offset_right = 960.0
offset_bottom = 576.0
placeholder_text = "action"
wrap_mode = 1
scroll_smooth = true
caret_blink = true
[node name="success" type="TextEdit" parent="."]
unique_name_in_owner = true
clip_contents = false
layout_mode = 0
offset_left = 64.0
offset_top = 608.0
offset_right = 960.0
offset_bottom = 864.0
placeholder_text = "success"
wrap_mode = 1
scroll_smooth = true
caret_blink = true
[node name="failure" type="TextEdit" parent="."]
unique_name_in_owner = true
clip_contents = false
layout_mode = 0
offset_left = 64.0
offset_top = 896.0
offset_right = 960.0
offset_bottom = 1152.0
placeholder_text = "failure"
wrap_mode = 1
scroll_smooth = true
caret_blink = true
[node name="difficulty" type="LineEdit" parent="."]
unique_name_in_owner = true
layout_mode = 0
offset_left = 576.0
offset_top = 64.0
offset_right = 718.0
offset_bottom = 128.0
placeholder_text = "difficulty"
[node name="duration" type="LineEdit" parent="."]
unique_name_in_owner = true
layout_mode = 0
offset_left = 832.0
offset_top = 64.0
offset_right = 974.0
offset_bottom = 128.0
placeholder_text = "duration"
[node name="ends_on" type="OptionButton" parent="."]
unique_name_in_owner = true
layout_mode = 0
offset_left = 1024.0
offset_top = 64.0
offset_right = 1344.0
offset_bottom = 128.0
selected = 0
item_count = 3
popup/item_0/id = 0
popup/item_1/text = "Ends on Sleep"
popup/item_1/id = 1
popup/item_2/text = "Ends on Rest"
popup/item_2/id = 2
[node name="challenge" type="OptionButton" parent="."]
unique_name_in_owner = true
layout_mode = 0
offset_left = 512.0
offset_top = 160.0
offset_right = 1344.0
offset_bottom = 224.0
selected = 0
item_count = 3
popup/item_0/id = 0
popup/item_1/text = "Throw 1 dice"
popup/item_1/id = 1
popup/item_2/text = "Throw x dice"
popup/item_2/id = 2
[node name="target" type="ItemList" parent="."]
unique_name_in_owner = true
clip_contents = false
layout_mode = 0
offset_left = 1024.0
offset_top = 896.0
offset_right = 1344.0
offset_bottom = 1152.0
mouse_filter = 2
select_mode = 2
item_count = 1
item_0/text = "target"
[node name="stat" type="ItemList" parent="."]
unique_name_in_owner = true
clip_contents = false
layout_mode = 0
offset_left = 1024.0
offset_top = 320.0
offset_right = 1344.0
offset_bottom = 864.0
mouse_filter = 2
select_mode = 2
[node name="http" type="HTTPRequest" parent="."]
unique_name_in_owner = true
use_threads = true
[connection signal="text_changed" from="cost/body" to="." method="_on_body_text_changed"]
[connection signal="text_changed" from="cost/communication" to="." method="_on_communication_text_changed"]
[connection signal="text_changed" from="cost/mind" to="." method="_on_mind_text_changed"]
[connection signal="text_changed" from="cost/soul" to="." method="_on_soul_text_changed"]
[connection signal="text_changed" from="action" to="." method="_on_action_text_changed"]
[connection signal="text_changed" from="success" to="." method="_on_success_text_changed"]
[connection signal="text_changed" from="failure" to="." method="_on_failure_text_changed"]
[connection signal="text_changed" from="difficulty" to="." method="_on_difficulty_text_changed"]
[connection signal="text_changed" from="duration" to="." method="_on_duration_text_changed"]
[connection signal="item_selected" from="ends_on" to="." method="_on_ends_on_item_selected"]
[connection signal="request_completed" from="http" to="." method="_on_http_request_completed"]

View file

@ -0,0 +1,7 @@
extends Control
var item # e.g. grondir
var category # e.g. character
var module # e.g. trait
var items # e.g. ["Undergrounder","Tough"]

View file

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

View file

@ -0,0 +1,12 @@
[gd_scene load_steps=2 format=3 uid="uid://bqswmmgfxstfw"]
[ext_resource type="Script" uid="uid://bsni2icpr5xpg" path="res://01 - Menus/04 - Modules/modifier.gd" id="1_iafih"]
[node name="stat" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_iafih")

View file

@ -0,0 +1,25 @@
extends Control
var item # e.g. grondir
var category # e.g. character
var module # e.g. trait
var items # e.g. ["Undergrounder","Tough"]
var config
var item_filter = ""
func _enter_tree() -> void:
config = ConfigFile.new()
config.load("res://02 - Configurations/" + category + ".ini")
%text.text = config.get_value(item,"text", "")
func _on_backstory_text_changed() -> void:
config = ConfigFile.new()
config.load("res://02 - Configurations/" + category + ".ini")
config.set_value(item,"text",%text.text)
get_parent().get_parent().show_save()
func save():
config.save("res://02 - Configurations/" + category + ".ini")

View file

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

View file

@ -0,0 +1,19 @@
[gd_scene load_steps=2 format=3 uid="uid://blinf0w4bd7xh"]
[ext_resource type="Script" uid="uid://c7veejgoktxy4" path="res://01 - Menus/04 - Modules/text.gd" id="1_ed0wg"]
[node name="text" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_ed0wg")
[node name="text" type="TextEdit" parent="."]
unique_name_in_owner = true
clip_contents = false
layout_mode = 0
offset_top = 320.0
offset_right = 576.0
offset_bottom = 768.0
wrap_mode = 1
[connection signal="text_changed" from="text" to="." method="_on_backstory_text_changed"]

View file

@ -0,0 +1,7 @@
extends Control
var item # e.g. grondir
var category # e.g. character
var module # e.g. trait
var items # e.g. ["Undergrounder","Tough"]

View file

@ -0,0 +1 @@
uid://5fupt8jhtnre

View file

@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://bbtwis5vf5pgj"]
[ext_resource type="Script" uid="uid://5fupt8jhtnre" path="res://01 - Menus/04 - Modules/trait.gd" id="1_elj4r"]
[node name="trait" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_elj4r")

View file

@ -0,0 +1,7 @@
extends Control
var item # e.g. grondir
var category # e.g. character
var module # e.g. trait
var items # e.g. ["Undergrounder","Tough"]

View file

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

View file

@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://cn53vjwt1k4wq"]
[ext_resource type="Script" uid="uid://cbbigwfdfc2l4" path="res://01 - Menus/04 - Modules/xenoline.gd" id="1_bofh8"]
[node name="xenoline" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_bofh8")

View file

@ -0,0 +1,40 @@
extends Node2D
var config
var items:Array
var module
var modules_list
var name_
var name_self
func _enter_tree() -> void:
%scroll.visible = false
config = ConfigFile.new()
config.load("res://02 - Configurations/campaign/categories.ini")
func _on_close_button_up() -> void:
queue_free()
func _on_items_button_up() -> void:
%scroll.visible = true
config = ConfigFile.new()
config.load("res://02 - Configurations/campaign/categories.ini")
items = config.get_sections()
for j in %container.get_children():
%container.remove_child(j)
for i in items + [""]:
var item = load("res://01 - Menus/05 - Campaign Manager/item_helper.tscn").instantiate()
item.item = i
%container.add_child(item)
func _on_save_button_up() -> void:
config = ConfigFile.new()
config.load("res://02 - Configurations/campaign/categories.ini")
for i in items.size() + 1:
%container.get_child(i).save()
_on_items_button_up()

View file

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

View file

@ -0,0 +1,55 @@
[gd_scene load_steps=2 format=3 uid="uid://c6cqrvu2ifno6"]
[ext_resource type="Script" uid="uid://cn6njcwxgyat2" path="res://01 - Menus/05 - Campaign Manager/campaign_manager.gd" id="1_wb8ha"]
[node name="campaign_manager" type="Node2D"]
script = ExtResource("1_wb8ha")
[node name="ui_background" type="ColorRect" parent="."]
unique_name_in_owner = true
offset_right = 512.0
offset_bottom = 1440.0
color = Color(0.047058824, 0.07058824, 0.09803922, 1)
[node name="close" type="Button" parent="."]
unique_name_in_owner = true
offset_left = 96.0
offset_top = 1280.0
offset_right = 416.0
offset_bottom = 1344.0
text = "Close"
[node name="items" type="Button" parent="."]
unique_name_in_owner = true
offset_left = 96.0
offset_top = 320.0
offset_right = 416.0
offset_bottom = 384.0
text = "items"
[node name="save" type="Button" parent="."]
unique_name_in_owner = true
offset_left = 96.0
offset_top = 1184.0
offset_right = 416.0
offset_bottom = 1248.0
text = "Save"
[node name="scroll" type="ScrollContainer" parent="."]
unique_name_in_owner = true
clip_contents = false
offset_left = 576.0
offset_top = 64.0
offset_right = 2496.0
offset_bottom = 1408.0
horizontal_scroll_mode = 0
[node name="container" type="VBoxContainer" parent="scroll"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[connection signal="button_up" from="close" to="." method="_on_close_button_up"]
[connection signal="button_up" from="items" to="." method="_on_items_button_up"]
[connection signal="button_up" from="save" to="." method="_on_save_button_up"]

View file

@ -0,0 +1,117 @@
extends Control
var item
var config
var name_
var name_self
var module
var modules_list
var main_menu_entry = ""
func _enter_tree() -> void:
config = ConfigFile.new()
config.load("res://02 - Configurations/campaign/categories.ini")
name_ = config.get_value(item,"name","")
name_self = config.get_value(item,"name_self","")
modules_list = config.get_value(item,"modules_list",[])
%item.text = item
%name.text = name_
%name_self.text = name_self
%add_new_select.visible = false
%module.add_item("")
%module.add_item(%item.text)
print("item_helper:_enter_tree: item_helper for " + item)
var modules:Array = [""]
var select_module = 0
for i in config.get_sections():
print("item_helper:_enter_tree:i populating %add_new_select with " + i)
%add_new_select.add_item(i)
var k = config.get_value(i,"module","")
if k == %item.text: # select item 1 when module has same name as item
print("item_helper:_enter_tree: selecting " + k)
select_module = 1
elif k != "": # proceed only if module is set
if not modules.has(k): # don't duplicate entries
print("item_helper:_enter_tree:2 " + str(k) + " into " + str(modules))
modules = modules + [config.get_value(i,"module","")]
%module.add_item(k)
if k == config.get_value(item,"module",""):
print("item_helper:_enter_tree:3 selecting " + k + " for " + str(i))
select_module = modules.find(k) + 1
%module.select(select_module)
config = ConfigFile.new()
config.load("res://02 - Configurations/campaign/main_menu.ini")
var h = 1
for i in config.get_sections():
%categories.add_item(config.get_value(i,"name",""))
%categories.set_item_tooltip(%categories.item_count - 1,i)
if config.get_value(i,"items",[]).has(item):
%categories.select(h)
h = h + 1
config = ConfigFile.new()
config.load("res://02 - Configurations/campaign/categories.ini")
var j:float = modules_list.size()
if j != 0:
%modules_list.max_columns = j
%modules_list.fixed_column_width = %modules_list.size.x/(1.1*j) - (j *8)
for i in modules_list:
print("item_helper:_enter_tree:1 " + i)
%modules_list.add_item(i)
func save():
if %item.text != "":
config = ConfigFile.new()
config.load("res://02 - Configurations/campaign/categories.ini")
item = %item.text
config.set_value(item,"name",%name.text)
config.set_value(item,"name_self",%name_self.text)
config.set_value(item,"module",%module.text)
var j = []
for i in %modules_list.item_count:
j = j + [%modules_list.get_item_text(i)]
config.set_value(item,"modules_list",j)
print("item_helper:save:1 saving " + item)
config.save("res://02 - Configurations/campaign/categories.ini")
config = ConfigFile.new()
config.load("res://02 - Configurations/campaign/main_menu.ini")
if not config.get_value(main_menu_entry,"items",[]).has(item) and main_menu_entry != "":
print("item_helper:save:2 " + item + " not in " + str(config.get_value(main_menu_entry,"items",[])))
config.set_value(main_menu_entry,"items",config.get_value(main_menu_entry,"items",[]) + [item])
config.save("res://02 - Configurations/campaign/main_menu.ini")
func _on_modules_list_item_selected(index: int) -> void:
print("item_helper:_on_modules_list_item_selected:2 remove " + %modules_list.get_item_text(index))
%modules_list.remove_item(index)
func _on_add_new_item_selected(index: int) -> void:
%modules_list.add_item(%add_new_select.get_item_text(index))
var j:float = %modules_list.item_count
%modules_list.max_columns = j
%modules_list.fixed_column_width = %modules_list.size.x/(1.1*j) - (j *8)
%add_new_select.visible = false
func _on_module_item_selected(index: int) -> void:
module = %module.get_item_text(index)
func _on_add_new_button_up() -> void:
print("item_helper:_on_add_new_button_up:1 Add new")
%add_new_select.visible = true
func _on_add_new_select_focus_exited() -> void:
%add_new_select.visible = false
func _on_item_text_changed(new_text: String) -> void:
%module.set_item_text(1,new_text)
func _on_categories_item_selected(index: int) -> void:
main_menu_entry = %categories.get_item_tooltip(index)
print("item_helper:_on_categories_item_selected:1 " + str(main_menu_entry))

View file

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

View file

@ -0,0 +1,131 @@
[gd_scene load_steps=2 format=3 uid="uid://chky5yb5bj7gy"]
[ext_resource type="Script" uid="uid://nft8qh8eyyn4" path="res://01 - Menus/05 - Campaign Manager/item_helper.gd" id="1_yac37"]
[node name="item_helper" type="Control"]
custom_minimum_size = Vector2(0, 320)
layout_mode = 3
anchors_preset = 0
offset_right = 2112.0
offset_bottom = 192.0
size_flags_horizontal = 3
size_flags_vertical = 3
script = ExtResource("1_yac37")
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 0
offset_right = 1920.0
offset_bottom = 320.0
color = Color(0.047058824, 0.07058824, 0.09803922, 1)
[node name="item" type="LineEdit" parent="."]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = -1
anchor_left = 0.030303031
anchor_top = 0.2
anchor_right = 0.030303031
anchor_bottom = 0.2
offset_right = 256.0
offset_bottom = 64.0
placeholder_text = "technical name"
metadata/_edit_use_anchors_ = true
[node name="name_self" type="LineEdit" parent="."]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = -1
anchor_left = 0.18200001
anchor_top = 0.2
anchor_right = 0.18200001
anchor_bottom = 0.2
offset_left = -0.3840332
offset_right = 255.61597
offset_bottom = 64.0
placeholder_text = "singular name"
metadata/_edit_use_anchors_ = true
[node name="name" type="LineEdit" parent="."]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = -1
anchor_left = 0.333
anchor_top = 0.2
anchor_right = 0.333
anchor_bottom = 0.2
offset_left = 0.7039795
offset_right = 256.70398
offset_bottom = 64.0
placeholder_text = "multiple name"
metadata/_edit_use_anchors_ = true
[node name="modules_list" type="ItemList" parent="."]
unique_name_in_owner = true
clip_contents = false
layout_mode = 1
anchors_preset = -1
anchor_left = 0.030000001
anchor_top = 0.5
anchor_right = 0.030000001
anchor_bottom = 0.5
offset_left = 0.6399994
offset_right = 1472.64
offset_bottom = 128.0
metadata/_edit_use_anchors_ = true
[node name="add_new_select" type="OptionButton" parent="."]
unique_name_in_owner = true
visible = false
layout_mode = 1
anchors_preset = -1
anchor_left = 0.54545456
anchor_top = 0.6
anchor_right = 0.54545456
anchor_bottom = 0.6
offset_right = 512.0
offset_bottom = 64.0
metadata/_edit_use_anchors_ = true
[node name="module" type="OptionButton" parent="."]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = -1
anchor_left = 0.4848485
anchor_top = 0.2
anchor_right = 0.4848485
anchor_bottom = 0.2
offset_right = 256.0
offset_bottom = 64.0
metadata/_edit_use_anchors_ = true
[node name="add_new" type="Button" parent="."]
unique_name_in_owner = true
layout_mode = 0
offset_left = 1600.0
offset_top = 192.0
offset_right = 1856.0
offset_bottom = 256.0
text = "Add list"
[node name="categories" type="OptionButton" parent="."]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = -1
anchor_left = 0.63600004
anchor_top = 0.2
anchor_right = 0.63600004
anchor_bottom = 0.2
offset_left = 0.76794434
offset_right = 256.76794
offset_bottom = 64.0
item_count = 1
popup/item_0/id = 0
metadata/_edit_use_anchors_ = true
[connection signal="text_changed" from="item" to="." method="_on_item_text_changed"]
[connection signal="item_selected" from="modules_list" to="." method="_on_modules_list_item_selected"]
[connection signal="focus_exited" from="add_new_select" to="." method="_on_add_new_select_focus_exited"]
[connection signal="item_selected" from="add_new_select" to="." method="_on_add_new_item_selected"]
[connection signal="item_selected" from="module" to="." method="_on_module_item_selected"]
[connection signal="button_up" from="add_new" to="." method="_on_add_new_button_up"]
[connection signal="item_selected" from="categories" to="." method="_on_categories_item_selected"]

View file

@ -0,0 +1 @@
extends Node2D

View file

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

View file

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://y3yq0k83jf6o"]
[ext_resource type="Script" uid="uid://chr13mihhdey2" path="res://01 - Menus/06 - World Map/world_map.gd" id="1_oilm1"]
[node name="world_map" type="Node2D"]
script = ExtResource("1_oilm1")

View file

@ -0,0 +1,3 @@
[Scope]
type="attachment"

View file

@ -0,0 +1,2 @@
[ campaign ]
name="Cultists of Campath"

View file

@ -0,0 +1,125 @@
[character]
name="Characters"
name_self="Character"
module="character"
modules_list=["xenoline", "faction", "childhood", "youth", "trait", "stat", "skill", "pet"]
[xenoline]
name="Xenolines"
name_self="Xenoline"
module="xenoline"
modules_list=["trait", "stat", "skill"]
[faction]
name="Factions"
name_self="Faction"
module="text"
modules_list=["character", "country", "region", "city", "location"]
[trait]
name="Traits"
name_self="Trait"
module="trait"
modules_list=["stat", "skill"]
[skill]
name="Skills"
name_self="Skill"
module="skill"
modules_list=["stat", "target"]
[stat]
name="Stats"
name_self="Stat"
module="text"
modules_list=[]
[ranged weapon]
name="Ranged Weapons"
name_self="Ranged Weapon"
module=""
modules_list=["attachment"]
[attachment]
name="Attachments"
name_self="Attachment"
module=""
modules_list=[]
[modifier]
name="Modifiers"
name_self="Modifier"
module=""
modules_list=[]
[target]
name="Targets"
name_self="Target"
module=""
modules_list=[]
[youth]
name="Youths"
name_self="Youth"
module=""
modules_list=[]
[childhood]
name="Childhoods"
name_self="Childhood"
module=""
modules_list=[]
[melee weapon]
name="Melee Weapons"
name_self="Melee Weapon"
module=""
modules_list=[]
[pet]
name="Pets"
name_self="Pet"
module="text"
modules_list=["trait", "stat", "skill"]
[country]
name="Countries"
name_self="Country"
module=""
modules_list=["region", "city", "location"]
[region]
name="Regions"
name_self="Region"
module=""
modules_list=["city", "location"]
[city]
name="Cities"
name_self="City"
module=""
modules_list=["location"]
[location]
name="Locations"
name_self="Location"
module="location"
modules_list=[]

View file

@ -0,0 +1,19 @@
[characters]
name="Characters"
items=["character", "xenoline", "faction", "trait", "skill", "stat", "youth", "childhood", "pet"]
[items]
name="Items"
items=["ranged weapon", "attachment", "melee weapon"]
[location]
name="Locations"
items=["country", "region", "city", "location"]
[battle_map]
name="Battle Maps"
items=[]

View file

@ -0,0 +1,3 @@
[Wallia]
type="campath"

View file

@ -0,0 +1,39 @@
[Grondir]
type="character"
name=["Grondir", "Grondir Fearweaver"]
birthday="7.01.5389"
backstory="After decades in the mines, Grondir was one of the miners who found the Monolith in that horrible, jagged cave. On the third day of Spring, 5521, he was captured by the The Cultists of Campath for questioning."
childhood=[]
youth=[]
xenoline=["Dwarf"]
xenogene=[]
faction=["Unaffiliated"]
pet=[]
trait=[]
skill=[]
stat=[]
[Alveus]
type="character"
name=["Alveus", "The First"]
xenoline=["Inhuman"]
backstory="Alveus, the first Inhuman, trapped on Maveth, able to control other Inhumans."
trait=["Tough"]
faction=["Cultists of Campath"]
[Lisa]
type="character"
xenoline=["Human"]
faction=[]
pet=["Maika"]
trait=[]
skill=[]
stat=[]
[Thorben]
type="character"
xenoline=["Human"]

View file

@ -0,0 +1,4 @@
[Wallia]
type="city"
location=["Wavian Lair"]

View file

@ -0,0 +1,9 @@
[Wallia]
type="country"
region=["The Wavian Peaks"]
[Nurim]
type="country"
region=["The Eatobel Heights"]

View file

@ -0,0 +1,3 @@
[Luciferium]
type="drug"

View file

@ -0,0 +1,6 @@
[Cultists of Campath]
type="faction"
character=["Alveus"]
country=[]
region=["The Eatobel Heights"]

View file

@ -0,0 +1,7 @@
[Wavian Lair]
type="location"
[The Monolith]
type="location"

View file

@ -0,0 +1,41 @@
[Certainty]
type="modifier"
text="Certainty describes how much a character believes in their motives and agenda."
[Cramped comfortability]
type="modifier"
text="Cramped comfortability describes how comfortable a character is in cramped spaces."
[Mining]
type="modifier"
text="Mining describes how good a character is at breaking stone and other sturdy objects/walls."
[Darkness sensitivity]
type="modifier"
text="Darkness sensitivity describes how much a character can see in unlit areas. "
[Light sensitivity]
type="modifier"
text="Darkness sensitivity describes how much a character is affected by light, especially sunlight. Very low light sensitivity can physically harm a character when exposed to light."
[Mental Health]
type="modifier"
text="Mental Health describes how stable a character's mind is.
Very low mental health can trigger more and harsher mental breaks."
[Physical Health]
type="modifier"
text="Physical Health describes how stable a character's body is.
Very low physical health can trigger more and harsher health complications."
[Work]
type="modifier"
text="Work describes how good a character is at accomplishing a task, affecting both speed and quality."

View file

@ -0,0 +1,8 @@
[Maika]
type="pet"
skill=["Detect humanoid"]
text="Maika is n HUUUUnd
"
trait=[]
stat=[]

View file

@ -0,0 +1,4 @@
[M17]
type="ranged weapon"
attachment=["Scope"]

View file

@ -0,0 +1,10 @@
[The Wavian Peaks]
type="region"
location=[]
city=["Wallia"]
[The Eatobel Heights]
type="region"
location=["The Monolith"]

View file

@ -0,0 +1,77 @@
[Cleave the Stone]
type="skill"
action="Break a wall or object of sturdy hardness using a suitable melee weapon."
duration=0
ends_on=0
cost=[2, 0, 0, 0]
cost_per_target=false
target=["object"]
difficulty=8
success="The wall or object crumbles, allowing you to pass it."
failure="The sturdiness overwhelms you, leaving you staggered for the remainder of this turn."
stat=["Mining"]
[Fortify the Mind]
type="skill"
cost=[0, 1, 0, 0]
difficulty=5
action="Fortify the mind of a living being."
success="The target will get 80% less mood debuffs.
The target will get 50% less mood buffs."
failure="The target will have to throw a dice.
On a 1, they instantly have a mental break.
On a 6, turn into a success instead."
duration=8
ends_on=1
target=["humanoid"]
stat=[""]
[Calm humanoid]
type="skill"
cost=[0, 1, 0, 1]
difficulty=4
action="Calm a humanoid."
success="The target will gain advantage on mental break rolls."
failure="The target will have to throw a dice.
On a 1, they instantly have a mental break.
On a 6, turn into a success instead."
duration=8
ends_on=1
target=["humanoid"]
stat=["Mental Health"]
[Kick down door]
type="skill"
cost=[1, 0, 0, 0]
difficulty=4
action="Kick down a non-sturdy door."
success="The door breaks, allowing you to pass it."
failure="The sturdiness overwhelms you, leaving you staggered for the remainder of this turn."
duration=0
ends_on=0
target=["object"]
stat=["Physical Health"]
[Shape Flesh]
cost=[0, 1, 1, 1]
difficulty=8
action="Shape the flesh of a deceased being into a Fleshbeast."
success="Target up to 3 non-eroded organic bodies (at least size 1).
For each successful throw, enhance the Fleshbeast tier by 1.
If at least half of the throws are critical successes, the Fleshbeast gains an additional tier.
You control the Fleshbeast as your character."
failure="The respective Fleshbeast is created, but you do not control it.
It is aggressive towards all living beings, but its lack of a brain reduces its targets to those in sight."
duration=2
ends_on=0
target=["multiple", "dead"]
stat=[""]
[Detect humanoid]
type="skill"

View file

@ -0,0 +1 @@
/home/marty/Cultists of Campath/Godot Project/02 - Configurations/modifier.ini

View file

@ -0,0 +1,32 @@
[ self ]
type="target"
[ humanoid ]
type="target"
[ mechanoid ]
type="target"
[ animal ]
type="target"
[ object ]
type="target"
[ multiple ]
type="target"
[ solid area ]
type="target"
[ liquid area ]
type="target"
[ area ]
type="target"
[ living ]
type="target"
[ dead ]
type="target"

View file

@ -0,0 +1,26 @@
[Undergrounder]
character="Undergrounder characters have adapted to the dark, cramped spaces of the mountains.
They are more comfortable when inside, as their bodies no longer tolerate sunlight as well."
attribute=[3, 0, 0, -2]
skill=["Cleave the Stone"]
stat=["Mining"]
[Tough]
character="Tough characters have, through training or genetics, adapted their body to withstand external physical harm."
attribute=[4, 0, 0, 0]
[Neurotic]
type="trait"
[Iron-Willed]
type="trait"
skill=["Fortify the Mind"]
stat=["Certainty"]
[Normal]
type="trait"

View file

@ -0,0 +1,3 @@
[h]
type="wallia"

View file

@ -0,0 +1,7 @@
[M17]
type="weapon"
[B388]
type="weapon"

View file

@ -0,0 +1,20 @@
[Human]
life_expectancy=80
childhood_years=13
youth_years=8
body_type=["humanoid"]
body_size=1.7
trait=["Normal"]
[Dwarf]
life_expectancy=220
childhood_years=20
youth_years=20
trait=["Undergrounder", "Tough"]
[Inhuman]
type="xenoline"
trait=["Neurotic"]

1
icon.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>

After

Width:  |  Height:  |  Size: 995 B

43
icon.svg.import Normal file
View file

@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bs86c45lw1fbq"
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.svg"
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

4
palette.tres Normal file
View file

@ -0,0 +1,4 @@
[gd_resource type="ColorPalette" format=3 uid="uid://tiu8sf8sm6vt"]
[resource]
colors = PackedColorArray(0.1254902, 0.1764706, 0.22745098, 1, 0.047058824, 0.07058824, 0.09803922, 1, 0.8509804, 0.29411766, 0.29411766, 1, 0.7411765, 0.7882353, 0.28627452, 1, 0.8666667, 0.67058825, 0.28627452, 1, 0.3137255, 0.5568628, 0.7607843, 1, 0.64705884, 0.3254902, 0.74509805, 1, 0.18431373, 0.7411765, 0.6627451, 1, 0.81960785, 0.81960785, 0.81960785, 1, 0.9137255, 0.8980392, 0.7921569, 1, 0.61960787, 0.627451, 0.58431375, 1, 0.8, 0.4, 0.4, 1, 0.70980394, 0.7411765, 0.40784314, 1, 0.9411765, 0.7764706, 0.45490196, 1, 0.5058824, 0.63529414, 0.74509805, 1, 0.69803923, 0.5803922, 0.73333335, 1, 0.5411765, 0.74509805, 0.7176471, 1, 1, 1, 1, 1)

33
project.godot Normal file
View file

@ -0,0 +1,33 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="Cultists of Campath"
run/main_scene="uid://c1qk762funu8g"
config/features=PackedStringArray("4.5", "Forward Plus")
config/icon="res://icon.svg"
[display]
window/size/borderless=true
window/handheld/orientation=1
[gui]
theme/custom="uid://lf2ixoythamg"
[input]
escape={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}

View file

@ -0,0 +1,34 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="Cultists of Campath"
run/main_scene="uid://c1qk762funu8g"
config/features=PackedStringArray("4.5", "Forward Plus")
config/icon="res://icon.svg"
[display]
window/size/mode=4
window/size/borderless=true
window/handheld/orientation=1
[gui]
theme/custom="uid://lf2ixoythamg"
[input]
escape={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}

View file

@ -0,0 +1,34 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="Cultists of Campath"
run/main_scene="uid://c1qk762funu8g"
config/features=PackedStringArray("4.5", "Forward Plus")
config/icon="res://icon.svg"
[display]
window/size/mode=4
window/size/borderless=true
window/handheld/orientation=1
[gui]
theme/custom="uid://lf2ixoythamg"
[input]
escape={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}

237
theme.tres Normal file
View file

@ -0,0 +1,237 @@
[gd_resource type="Theme" load_steps=21 format=3 uid="uid://lf2ixoythamg"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e1x85"]
content_margin_left = 30.0
bg_color = Color(0.1254902, 0.1764706, 0.22745098, 1)
skew = Vector2(0.33, 0)
border_width_left = 15
border_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
corner_radius_top_right = 5
corner_radius_bottom_right = 5
expand_margin_right = 15.0
shadow_size = 5
shadow_offset = Vector2(5, 5)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wvktn"]
content_margin_left = 30.0
bg_color = Color(5.017369, 5.017369, 5.017369, 0)
corner_radius_top_right = 5
corner_radius_bottom_right = 5
expand_margin_right = 15.0
shadow_offset = Vector2(5, 5)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cjfk0"]
content_margin_left = 30.0
bg_color = Color(0.047058824, 0.07058824, 0.09803922, 1)
skew = Vector2(0.33, 0)
border_width_left = 15
border_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
corner_radius_top_right = 5
corner_radius_bottom_right = 5
expand_margin_right = 15.0
shadow_size = 5
shadow_offset = Vector2(5, 5)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vj6dk"]
content_margin_left = 30.0
bg_color = Color(0.1254902, 0.1764706, 0.22745098, 1)
skew = Vector2(0.33, 0)
border_width_left = 15
border_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
corner_radius_top_right = 5
corner_radius_bottom_right = 5
expand_margin_right = 15.0
shadow_size = 5
shadow_offset = Vector2(5, 5)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_110ce"]
content_margin_left = 30.0
bg_color = Color(0.1254902, 0.1764706, 0.22745098, 1)
skew = Vector2(0.33, 0)
border_width_left = 15
border_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
corner_radius_top_right = 5
corner_radius_bottom_right = 5
expand_margin_right = 15.0
shadow_size = 5
shadow_offset = Vector2(5, 5)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_05tig"]
content_margin_left = 30.0
bg_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
skew = Vector2(0.33, 0)
border_width_left = 15
border_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
corner_radius_top_right = 5
corner_radius_bottom_right = 5
expand_margin_right = 15.0
shadow_size = 5
shadow_offset = Vector2(5, 5)
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wvktn"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_e1x85"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_howt0"]
bg_color = Color(0.6, 0.6, 0.6, 0)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mihib"]
bg_color = Color(0.1254902, 0.1764706, 0.22745098, 1)
skew = Vector2(0.33, 0)
border_width_left = 15
border_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
corner_radius_top_right = 5
corner_radius_bottom_right = 5
shadow_size = 5
shadow_offset = Vector2(5, 5)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mworl"]
bg_color = Color(0.1254902, 0.1764706, 0.22745098, 1)
skew = Vector2(0.33, 0)
border_width_left = 15
border_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
corner_radius_top_right = 5
corner_radius_bottom_right = 5
shadow_size = 5
shadow_offset = Vector2(5, 5)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ndmpe"]
bg_color = Color(0.1254902, 0.1764706, 0.22745098, 1)
skew = Vector2(0.33, 0)
border_width_left = 15
border_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
corner_radius_top_right = 5
corner_radius_bottom_right = 5
shadow_size = 5
shadow_offset = Vector2(5, 5)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_504p6"]
content_margin_left = 25.0
content_margin_top = 25.0
content_margin_right = 25.0
content_margin_bottom = 25.0
bg_color = Color(0.1254902, 0.1764706, 0.22745098, 1)
corner_radius_top_left = 25
corner_radius_top_right = 25
corner_radius_bottom_right = 25
corner_radius_bottom_left = 25
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1rmny"]
bg_color = Color(0.1254902, 0.1764706, 0.22745098, 1)
skew = Vector2(0.33, 0)
border_width_left = 15
border_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
corner_radius_top_right = 5
corner_radius_bottom_right = 5
shadow_size = 5
shadow_offset = Vector2(5, 5)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_n3ikw"]
bg_color = Color(0.1254902, 0.1764706, 0.22745098, 1)
skew = Vector2(0.33, 0)
border_width_left = 15
border_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
corner_radius_top_right = 5
corner_radius_bottom_right = 5
shadow_size = 5
shadow_offset = Vector2(5, 5)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6cw85"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0ceoj"]
bg_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
border_width_bottom = 5
corner_radius_top_left = 50
corner_radius_top_right = 50
corner_radius_bottom_right = 50
corner_radius_bottom_left = 50
shadow_size = 5
shadow_offset = Vector2(-5, -5)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ttqs8"]
content_margin_left = 30.0
bg_color = Color(0.1254902, 0.1764706, 0.22745098, 1)
skew = Vector2(0.33, 0)
border_width_left = 15
border_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
corner_radius_top_right = 5
corner_radius_bottom_right = 5
shadow_size = 5
shadow_offset = Vector2(5, 5)
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_cjfk0"]
content_margin_left = 32.0
content_margin_top = 32.0
content_margin_right = 32.0
content_margin_bottom = 32.0
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6q1gq"]
content_margin_left = 25.0
content_margin_top = 25.0
content_margin_right = 25.0
content_margin_bottom = 25.0
bg_color = Color(0.1254902, 0.1764706, 0.22745098, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0.047058824, 0.07058824, 0.09803922, 1)
border_blend = true
corner_radius_top_left = 25
corner_radius_top_right = 25
corner_radius_bottom_right = 25
corner_radius_bottom_left = 25
shadow_size = 5
shadow_offset = Vector2(5, 5)
[resource]
default_font_size = 30
/colors/base = Color(0.11764706, 0.11764706, 0.18039216, 1)
/constants/outline_size = 50
/font_sizes/big = 50
/font_sizes/default = 30
Button/colors/font_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
Button/colors/font_disabled_color = Color(0.61960787, 0.627451, 0.58431375, 1)
Button/colors/font_focus_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
Button/colors/font_hover_color = Color(0.70980394, 0.7411765, 0.40784314, 1)
Button/colors/font_hover_pressed_color = Color(0.70980394, 0.7411765, 0.40784314, 1)
Button/colors/font_outline_color = Color(0.047058824, 0.07058824, 0.09803922, 1)
Button/colors/font_pressed_color = Color(0.7411765, 0.7882353, 0.28627452, 1)
Button/constants/outline_size = 10
Button/styles/disabled = SubResource("StyleBoxFlat_e1x85")
Button/styles/focus = SubResource("StyleBoxFlat_wvktn")
Button/styles/hover = SubResource("StyleBoxFlat_cjfk0")
Button/styles/hover_pressed = SubResource("StyleBoxFlat_vj6dk")
Button/styles/normal = SubResource("StyleBoxFlat_110ce")
Button/styles/pressed = SubResource("StyleBoxFlat_05tig")
ItemList/colors/font_color = Color(0.9137255, 0.8980392, 0.7921569, 1)
ItemList/colors/font_hovered_color = Color(0.7411765, 0.7882353, 0.28627452, 1)
ItemList/colors/font_hovered_selected_color = Color(0.7411765, 0.7882353, 0.28627452, 1)
ItemList/colors/font_outline_color = Color(0.047058824, 0.07058824, 0.09803922, 1)
ItemList/colors/font_selected_color = Color(0.70980394, 0.7411765, 0.40784314, 1)
ItemList/colors/guide_color = Color(0.7, 0.7, 0.7, 0.25)
ItemList/constants/h_separation = 50
ItemList/constants/v_separation = 20
ItemList/styles/cursor = SubResource("StyleBoxEmpty_wvktn")
ItemList/styles/cursor_unfocused = SubResource("StyleBoxEmpty_e1x85")
ItemList/styles/focus = SubResource("StyleBoxFlat_howt0")
ItemList/styles/hovered = SubResource("StyleBoxFlat_mihib")
ItemList/styles/hovered_selected = SubResource("StyleBoxFlat_mworl")
ItemList/styles/hovered_selected_focus = SubResource("StyleBoxFlat_ndmpe")
ItemList/styles/panel = SubResource("StyleBoxFlat_504p6")
ItemList/styles/selected = SubResource("StyleBoxFlat_1rmny")
ItemList/styles/selected_focus = SubResource("StyleBoxFlat_n3ikw")
Label/colors/font_color = Color(0.1254902, 0.1764706, 0.22745098, 1)
Label/colors/font_outline_color = Color(0.047058824, 0.07058824, 0.09803922, 1)
Label/colors/font_shadow_color = Color(0, 0, 0, 0)
Label/constants/outline_size = 3
Label/styles/focus = SubResource("StyleBoxFlat_6cw85")
Label/styles/normal = SubResource("StyleBoxFlat_0ceoj")
LineEdit/styles/focus = SubResource("StyleBoxFlat_ttqs8")
LineEdit/styles/normal = SubResource("StyleBoxFlat_ttqs8")
LineEdit/styles/read_only = SubResource("StyleBoxFlat_ttqs8")
ScrollContainer/styles/focus = SubResource("StyleBoxEmpty_cjfk0")
ScrollContainer/styles/panel = SubResource("StyleBoxEmpty_cjfk0")
TextEdit/styles/focus = SubResource("StyleBoxFlat_6q1gq")
TextEdit/styles/normal = SubResource("StyleBoxFlat_6q1gq")
TextEdit/styles/read_only = SubResource("StyleBoxFlat_6q1gq")