Added subfolder for Charcter code for the MVP

This commit is contained in:
PersonGuyGit 2024-03-17 13:03:57 -06:00
parent 116d706c48
commit 8d3f317f01
126 changed files with 4137 additions and 0 deletions

View File

@ -0,0 +1,11 @@
To Do
1: Get the saving and loading code for CSV from Suwhan.
2: Make that code work with the UI of the MVP project.
3: Similar to the method of saving the Game Settings, to a .CFG file by using a singleton; I will need to save the character information to the player singleton for use.
4: Then save the singleton data to a CSV
5: Figure out the issues with CSV like doug mentioned.

View File

@ -0,0 +1,3 @@
source_md5="79d2b9a5284e50d91a97c2dd565f2fa4"
dest_md5="ab01d4eeab6e15a95fc10ee1b4e02967"

View File

@ -0,0 +1,3 @@
source_md5="79d2b9a5284e50d91a97c2dd565f2fa4"
dest_md5="ab01d4eeab6e15a95fc10ee1b4e02967"

View File

@ -0,0 +1,3 @@
source_md5="13a1e728def8fb06bd8e797fcc392604"
dest_md5="b396169339b2e8d769e9830c387050ad"

View File

@ -0,0 +1,3 @@
source_md5="13a1e728def8fb06bd8e797fcc392604"
dest_md5="b396169339b2e8d769e9830c387050ad"

View File

@ -0,0 +1,3 @@
source_md5="266f789a4e895911161321092c2c2429"
dest_md5="a08a6dcf169f683724bfd5cd82e23fe6"

View File

@ -0,0 +1,3 @@
source_md5="266f789a4e895911161321092c2c2429"
dest_md5="a08a6dcf169f683724bfd5cd82e23fe6"

View File

@ -0,0 +1,3 @@
source_md5="47313fa4c47a9963fddd764e1ec6e4a8"
dest_md5="2ded9e7f9060e2b530aab678b135fc5b"

View File

@ -0,0 +1 @@
source_md5="cfb2a27b25dace2544a35a8ec7d50081"

View File

@ -0,0 +1,3 @@
source_md5="3b37741efaad37471d3be79926341120"
dest_md5="f4ff30e73b46c5029908e5376b2e69b5"

View File

@ -0,0 +1,8 @@
[gd_scene format=2]
[node name="Control" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
__meta__ = {
"_edit_use_anchors_": false
}

View File

@ -0,0 +1,43 @@
****************************
README.TXT:
****************************
Author: Doug McCord
Date: 4-Feb-2024
****************************
Intro notes:
This project updates the RPGR BCI merged demo game from August 6, 2023 for
the Modgodtoolset and associated updates. Draws game from XML, and adds
numerous missing features.
The roadmap for this file can be found in the project Github:
Phase2/Documentation
****************************
Project file structure:
Surface Layer:
Default Godot files remain at this level
_toArchive:
Directory to serve as reference-only; precursor to trash
assets:
Images, fonts, themes and styles (TRES text resource data files). Note that all fonts and styles are defined in
the following themes: ui_controlNode_light_theme.tres and ui_controlNode_dark_theme.tres. Any style changes
should be made in those theme files to assure propagation throughout.
gamePlay:
Scenes and scripts specific to the gameplay section
globalScripts:
For project-wide use, or scripts that are not either:
A. attached to a template scene, intended to go with all instances of that, or
B. unique, scene-specific scripts.
screens:
Planned to include both .tscn scene files and their associated scripts.
userInterface: (note misnomer for text-based game)
Re-useable UI elements and their scripts, such as change-scene, input-response

View File

@ -0,0 +1,13 @@
#BUT_HISTORYPAGER:
# Iterates the page number and calls HistoryViewer script to display
# stored page and response fro the history array
#
extends Button
onready var historyViewerScript = get_node("/root/HistoryViewer")
#DKM TEMP: this needs refactoring -- too much being calculated as needed/repeated
func _on_But_HistoryPager_button_up() -> void:
historyViewerScript.update_pager()

View File

@ -0,0 +1,28 @@
#BUT_CHANGESCENE:
# Generic template script allowing GUI linking of scenes by button press.
tool
extends Button
#Creates param usable in the UI; and the params next to export make it string and file browser
export(String, FILE) var next_scene_path: = ""
onready var pSingleton = get_node("/root/PlayerCharacter").pc
var tempToggle = 0
func _on_But_NewGame_button_up():
if(pSingleton.pcText.length() < 1):
#print("GOT IT! Popup msg: " + $PopupDialog/WarnText.text)
var alertPopup = get_node("../../PopupDialog")
var alertPopupText = get_node("../../PopupDialog/WarnText")
alertPopupText.text = "No player was loaded! Please load a character to begin game."
alertPopup.popup_centered()
return
else:
var _changeResponse = get_tree().change_scene(next_scene_path)
func _get_configuration_warning() -> String:
return "next_scene_path must be set for this button to work" if next_scene_path == "" else ""

View File

@ -0,0 +1,29 @@
#CHARACTER_ADD:
# Script for adding a new character and both saving it to file and loading
# it into the character object
extends Control
onready var settings = get_node("/root/GlobalSaveInstance").settingsInstance
onready var pSingleton = get_node("/root/PlayerCharacter").pc
func _ready() -> void:
theme=load(settings.themeFile)
$Title/But_SaveChar.grab_focus()
func _on_But_SaveChar_pressed() -> void:
$Title/FileDialog.popup()
#DKM TEMP: this code was inherited and it needs pretty substantial
# overhaul for use in the module, depending on toolset use.
# For now all the labels are individual lineEdits we need to grab.
func _on_FileDialog_file_selected(path: String) -> void:
var pc = get_node("/root/PlayerCharacter")
var newCharFile = File.new()
newCharFile.open(path, 2)
#DKM TEMP: getting something to work with as text
var newCharStr = $Title/VBoxContainer/LabelName/LE_Name.text
newCharFile.store_string(newCharStr)
pSingleton.pcText = "Name: " + newCharStr
print("PC text: " + pSingleton.pcText )

View File

@ -0,0 +1,180 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://Screens/But_StartNewGame.gd" type="Script" id=1]
[ext_resource path="res://Screens/Character_Add.gd" type="Script" id=3]
[ext_resource path="res://UserInterface/But_ChangeScene.gd" type="Script" id=4]
[node name="Control" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
script = ExtResource( 3 )
[node name="PopupDialog" type="PopupDialog" parent="."]
anchor_top = 0.5
anchor_bottom = 0.5
[node name="WarnText" type="Label" parent="PopupDialog"]
margin_right = 40.0
margin_bottom = 14.0
text = "Example"
[node name="TextEdit" type="TextEdit" parent="."]
margin_left = 215.0
margin_top = 23.0
margin_right = 997.0
margin_bottom = 447.0
[node name="Title" type="Label" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
text = "Create Character (temp)"
align = 1
[node name="But_SaveChar" type="Button" parent="Title"]
margin_right = 12.0
margin_bottom = 20.0
text = "Save Character"
[node name="But_ChangeScene" type="Button" parent="Title"]
margin_left = -1.0
margin_top = 48.0
margin_right = 142.0
margin_bottom = 72.0
size_flags_vertical = 3
text = "Temp: Main Menu"
script = ExtResource( 4 )
next_scene_path = "res://Screens/MenuScreen.tscn"
[node name="But_StartNewGame" type="Button" parent="Title"]
margin_top = 98.0
margin_right = 159.0
margin_bottom = 122.0
size_flags_vertical = 3
text = "Temp: Start New Game"
script = ExtResource( 1 )
next_scene_path = "res://gamePlay/Game.tscn"
[node name="FileDialog" type="FileDialog" parent="Title"]
margin_left = 164.0
margin_top = 35.0
margin_right = 741.0
margin_bottom = 426.0
rect_min_size = Vector2( 400, 140 )
access = 2
[node name="VBoxContainer" type="VBoxContainer" parent="Title"]
anchor_left = 0.5
anchor_right = 0.5
margin_left = -20.0
margin_top = 50.0
margin_right = 20.0
margin_bottom = 140.0
[node name="LabelName" type="Label" parent="Title/VBoxContainer"]
margin_right = 81.0
margin_bottom = 31.0
text = "NAME
"
[node name="LE_Name" type="LineEdit" parent="Title/VBoxContainer/LabelName"]
margin_top = 15.0
margin_right = 58.0
margin_bottom = 24.0
[node name="LabelProfession" type="Label" parent="Title/VBoxContainer"]
margin_top = 35.0
margin_right = 81.0
margin_bottom = 66.0
text = "PROFESSION
"
[node name="LineEdit" type="LineEdit" parent="Title/VBoxContainer/LabelProfession"]
margin_top = 15.0
margin_right = 58.0
margin_bottom = 24.0
[node name="LabelStrength" type="Label" parent="Title/VBoxContainer"]
margin_top = 70.0
margin_right = 81.0
margin_bottom = 101.0
text = "STRENGTH
"
[node name="LineEdit" type="LineEdit" parent="Title/VBoxContainer/LabelStrength"]
margin_top = 15.0
margin_right = 58.0
margin_bottom = 24.0
[node name="LabelIntellect" type="Label" parent="Title/VBoxContainer"]
margin_top = 105.0
margin_right = 81.0
margin_bottom = 136.0
text = "INTELLECT
"
[node name="LineEdit" type="LineEdit" parent="Title/VBoxContainer/LabelIntellect"]
margin_top = 15.0
margin_right = 58.0
margin_bottom = 24.0
[node name="LabelWillpower" type="Label" parent="Title/VBoxContainer"]
margin_top = 140.0
margin_right = 81.0
margin_bottom = 171.0
text = "WILLPOWER
"
[node name="LineEdit" type="LineEdit" parent="Title/VBoxContainer/LabelWillpower"]
margin_top = 15.0
margin_right = 58.0
margin_bottom = 24.0
[node name="LabelCharm" type="Label" parent="Title/VBoxContainer"]
margin_top = 175.0
margin_right = 81.0
margin_bottom = 189.0
text = "CHARM"
[node name="LineEdit" type="LineEdit" parent="Title/VBoxContainer/LabelCharm"]
margin_top = 15.0
margin_right = 58.0
margin_bottom = 24.0
[node name="LabelWeapon" type="Label" parent="Title/VBoxContainer"]
margin_top = 193.0
margin_right = 81.0
margin_bottom = 224.0
text = "WEAPON
"
[node name="LineEdit" type="LineEdit" parent="Title/VBoxContainer/LabelWeapon"]
margin_top = 15.0
margin_right = 58.0
margin_bottom = 24.0
[node name="LabelArmor" type="Label" parent="Title/VBoxContainer"]
margin_top = 228.0
margin_right = 81.0
margin_bottom = 242.0
text = "ARMOR"
[node name="LineEdit" type="LineEdit" parent="Title/VBoxContainer/LabelArmor"]
margin_top = 15.0
margin_right = 58.0
margin_bottom = 24.0
[node name="LabelQuote" type="Label" parent="Title/VBoxContainer"]
margin_top = 246.0
margin_right = 81.0
margin_bottom = 260.0
text = "QUOTE"
[node name="LineEdit" type="LineEdit" parent="Title/VBoxContainer/LabelQuote"]
margin_top = 15.0
margin_right = 58.0
margin_bottom = 24.0
[connection signal="pressed" from="Title/But_SaveChar" to="." method="_on_But_SaveChar_pressed"]
[connection signal="button_up" from="Title/But_ChangeScene" to="Title/But_ChangeScene" method="_on_But_NewGame_button_up"]
[connection signal="button_up" from="Title/But_StartNewGame" to="Title/But_StartNewGame" method="_on_But_NewGame_button_up"]
[connection signal="file_selected" from="Title/FileDialog" to="." method="_on_FileDialog_file_selected"]

View File

@ -0,0 +1,24 @@
#CHARACTER_LOAD:
# Script for loading a character file into the character object from file
extends Control
onready var settings = get_node("/root/GlobalSaveInstance").settingsInstance
func _ready() -> void:
theme=load(settings.themeFile)
$Title/But_loadCharacter.grab_focus()
func _on_But_loadCharacter_pressed() -> void:
$LoadCharacter_FileDialog.popup()
#DKM TEMP: we need to load the character item, not display to field
func _on_LoadCharacter_FileDialog_file_selected(path: String) -> void:
print(path)
var charFile = File.new()
charFile.open(path, 1)
var pc = get_node("/root/PlayerCharacter")
pc.playerCharacterSingleton.pcText = charFile.get_as_text()
$TextEdit.text = pc.playerCharacterSingleton.pcText

View File

@ -0,0 +1,69 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://userInterface/Title.tscn" type="PackedScene" id=1]
[ext_resource path="res://userInterface/But_ChangeScene.tscn" type="PackedScene" id=2]
[ext_resource path="res://Screens/Character_Load.gd" type="Script" id=3]
[node name="Control" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
script = ExtResource( 3 )
[node name="TextEdit" type="TextEdit" parent="."]
margin_left = 189.0
margin_top = 18.0
margin_right = 989.0
margin_bottom = 461.0
readonly = true
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Title" parent="." instance=ExtResource( 1 )]
anchor_left = 0.0
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = 0.0
margin_top = 0.0
margin_right = 0.0
margin_bottom = 0.0
text = "Load Character (temp)"
[node name="But_loadCharacter" type="Button" parent="Title"]
margin_left = 22.0
margin_top = 34.0
margin_right = 155.0
margin_bottom = 54.0
text = "Load Character File"
[node name="But_StartNewGame" parent="Title" instance=ExtResource( 2 )]
margin_left = 22.0
margin_top = 71.0
margin_right = 181.0
margin_bottom = 95.0
text = "Temp: Start New Game"
script = null
[node name="But_ChangeScene" parent="Title" instance=ExtResource( 2 )]
margin_left = 21.0
margin_top = 109.0
margin_right = 164.0
margin_bottom = 133.0
text = "Temp: Main Menu "
script = null
[node name="LoadCharacter_FileDialog" type="FileDialog" parent="."]
margin_left = 193.0
margin_top = 33.0
margin_right = 862.0
margin_bottom = 409.0
rect_min_size = Vector2( 400, 140 )
window_title = "Open a File"
mode = 0
access = 1
__meta__ = {
"_edit_use_anchors_": false
}
[connection signal="pressed" from="Title/But_loadCharacter" to="." method="_on_But_loadCharacter_pressed"]
[connection signal="file_selected" from="LoadCharacter_FileDialog" to="." method="_on_LoadCharacter_FileDialog_file_selected"]

View File

@ -0,0 +1,49 @@
#HISTORY_VIEWER:
# Controls output space -- will display the appropriate history array page.
# DKM TEMP: 5/15/22: what's here is replicated from the Game script for starting
# purposes. I have this working in experimental version -- will add this back
# next.
extends Control
onready var settings = get_node("/root/GlobalSaveInstance").settingsInstance
onready var history_source = get_node("/root/History").historyScreensSingleton
onready var current_history = $Background/MarginContainer/Rows/GameInfo/CurrentHistory
#For zero-indexed array position:
onready var current_history_page_no = 0
onready var page_displayer = $Background/MarginContainer/Rows/ItemList/Page_Display
#Abstract class we instance when wanted in game as child of HistoryReference
const TextOutput = preload("res://UserInterface/Response.tscn")
const InputResponse = preload("res://UserInterface/InputResponse.tscn")
func _ready() -> void:
theme=load(settings.themeFile)
print("Loaded history array size is: " + str(history_source.output_history_array.size()))
update_pager()
#DKM TEMP:
# page_displayer.text = "1"
# if(current_history.get_child_count() > 0):
# current_history.remove_child(current_history.get_child(0))
# var opening_res = history_source.output_history_array[0]
# current_history.add_child(opening_res)
#Copies the response output to add to both current game output, and the
# history array.
func add_display_to_game(response: Control):
if(current_history.get_child_count() > 0):
current_history.remove_child(current_history.get_child(0))
current_history.add_child(response)
func update_pager():
if(current_history_page_no >= history_source.output_history_array.size()):
current_history_page_no = 0
print("Current page: " + str(current_history_page_no))
add_display_to_game(history_source.output_history_array[current_history_page_no])
current_history_page_no = current_history_page_no +1
page_displayer.text = str(current_history_page_no)

View File

@ -0,0 +1,97 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://Screens/HistoryViewer.gd" type="Script" id=1]
[ext_resource path="res://userInterface/But_ChangeScene.tscn" type="PackedScene" id=2]
[ext_resource path="res://assets/ui_controlNode_dark_theme.tres" type="Theme" id=3]
[ext_resource path="res://Screens/But_HistoryPager.gd" type="Script" id=4]
[node name="HistoryViewer" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
theme = ExtResource( 3 )
script = ExtResource( 1 )
[node name="Background" type="PanelContainer" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="MarginContainer" type="MarginContainer" parent="Background"]
margin_left = 1.0
margin_top = 1.0
margin_right = 1023.0
margin_bottom = 599.0
custom_constants/margin_right = 20
custom_constants/margin_top = 10
custom_constants/margin_left = 20
custom_constants/margin_bottom = 20
[node name="Rows" type="VBoxContainer" parent="Background/MarginContainer"]
margin_left = 20.0
margin_top = 10.0
margin_right = 1002.0
margin_bottom = 578.0
custom_constants/separation = 10
[node name="ItemList" type="ItemList" parent="Background/MarginContainer/Rows"]
margin_right = 982.0
margin_bottom = 40.0
rect_min_size = Vector2( 0, 40 )
[node name="But_ChangeScene" parent="Background/MarginContainer/Rows/ItemList" instance=ExtResource( 2 )]
margin_right = 200.0
margin_bottom = 36.0
text = "More Options"
next_scene_path = "res://screens/MoreOptions.tscn"
[node name="But_HistoryPager" type="Button" parent="Background/MarginContainer/Rows/ItemList"]
anchor_left = 0.5
anchor_right = 0.5
margin_left = -84.0
margin_right = 115.0
margin_bottom = 36.0
text = "History Pager"
script = ExtResource( 4 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Label" type="Label" parent="Background/MarginContainer/Rows/ItemList"]
anchor_left = 1.0
anchor_right = 1.0
margin_left = -194.94
margin_top = -1.12247
margin_right = -81.9397
margin_bottom = 23.8775
text = "History Page:"
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Page_Display" type="Label" parent="Background/MarginContainer/Rows/ItemList"]
anchor_left = 1.0
anchor_right = 1.0
margin_left = -40.0
margin_bottom = 25.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="GameInfo" type="PanelContainer" parent="Background/MarginContainer/Rows"]
margin_top = 50.0
margin_right = 982.0
margin_bottom = 568.0
size_flags_vertical = 3
[node name="CurrentHistory" type="VBoxContainer" parent="Background/MarginContainer/Rows/GameInfo"]
margin_left = 1.0
margin_top = 1.0
margin_right = 981.0
margin_bottom = 517.0
size_flags_horizontal = 3
size_flags_vertical = 3
custom_constants/separation = 20
[connection signal="button_up" from="Background/MarginContainer/Rows/ItemList/But_HistoryPager" to="Background/MarginContainer/Rows/ItemList/But_HistoryPager" method="_on_But_HistoryPager_button_up"]

View File

@ -0,0 +1,48 @@
#GRAB FOCUS: simple script for temp files to grab focus
# Expanded for Import Character option
extends Control
onready var settings = get_node("/root/GlobalSaveInstance").settingsInstance
onready var pSingleton = get_node("/root/PlayerCharacter").pc
var charFilePath
var a
func _ready() -> void:
theme=load(settings.themeFile)
func _on_Button_pressed():
$FileDialog.popup()
#this is going to take information from the file the player chose and put the individul parts into textboxes so it can be edited and then saved
func _on_FileDialog_file_selected(path):
var file = File.new()
#read the text in the file, save it in the variable a
file.open(path, File.READ)
#split by the spaces so the individual pieces can be separated into textboxes
while file.eof_reached() == false:
var csvStrArray = file.get_csv_line()
var i = 0
var isLabel = true
while i < csvStrArray.size():
var csvStr = csvStrArray[i]
if(isLabel):
#make a new textbox for each piece of information
var textLine = Label.new()
$ScrollContainer/VBoxContainer.add_child(textLine)
textLine.text = csvStr.to_upper()
isLabel = false
#DKM TEMP: save this unformatted to the singleton text string
pSingleton.pcText += csvStr.to_upper() + ": "
else:
isLabel = true
var textBox = LineEdit.new()
$ScrollContainer/VBoxContainer.add_child(textBox)
textBox.text = csvStr
#DKM TEMP: save this unformatted to the singleton text string
pSingleton.pcText += csvStr + "\n"
i += 1
file.close()

View File

@ -0,0 +1,122 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://UserInterface/Title.tscn" type="PackedScene" id=1]
[ext_resource path="res://UserInterface/But_ChangeScene.tscn" type="PackedScene" id=2]
[ext_resource path="res://Screens/ImportCharacter.gd" type="Script" id=3]
[ext_resource path="res://UserInterface/But_PlayButton.gd" type="Script" id=4]
[node name="Control" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
script = ExtResource( 3 )
[node name="PopupDialog" type="PopupDialog" parent="."]
anchor_top = 0.5
anchor_bottom = 0.5
[node name="WarnText" type="Label" parent="PopupDialog"]
margin_right = 40.0
margin_bottom = 14.0
text = "Example"
[node name="Background" type="Panel" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="FileDialog" type="FileDialog" parent="."]
margin_left = 113.0
margin_top = 24.0
margin_right = 886.0
margin_bottom = 480.0
rect_min_size = Vector2( 400, 140 )
window_title = "Open a File"
mode = 0
access = 2
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Title" parent="." instance=ExtResource( 1 )]
margin_left = -164.0
margin_top = 0.0
margin_right = 164.0
margin_bottom = 14.0
text = "Import Character"
[node name="But_Play" parent="." instance=ExtResource( 2 )]
margin_left = 1.0
margin_top = 34.0
margin_right = 152.0
margin_bottom = 71.0
text = "Start Game"
script = ExtResource( 4 )
next_scene_path = "res://gamePlay/Game.tscn"
[node name="But_Cancel" parent="." instance=ExtResource( 2 )]
margin_left = 1.0
margin_top = 78.0
margin_right = 152.0
margin_bottom = 115.0
text = "Back"
next_scene_path = "res://Screens/MenuScreen.tscn"
[node name="VBoxContainer2" type="VBoxContainer" parent="."]
anchor_left = 0.0634766
anchor_top = 0.0583333
anchor_right = 0.103516
anchor_bottom = 0.0583333
margin_left = 107.0
margin_right = 435.0
margin_bottom = 44.0
alignment = 1
__meta__ = {
"_edit_use_anchors_": true
}
[node name="But_OpenFile" type="Button" parent="VBoxContainer2"]
margin_right = 369.0
margin_bottom = 20.0
text = "Open Character File"
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Save_Button" type="Button" parent="VBoxContainer2"]
margin_top = 24.0
margin_right = 369.0
margin_bottom = 44.0
text = "Save"
[node name="ScrollContainer" type="ScrollContainer" parent="."]
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -341.0
margin_top = -175.0
margin_right = 427.0
margin_bottom = 284.0
follow_focus = true
__meta__ = {
"_edit_use_anchors_": false
}
[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer"]
__meta__ = {
"_edit_use_anchors_": false
}
[node name="NameLabel" type="Label" parent="ScrollContainer/VBoxContainer"]
visible = false
margin_bottom = 14.0
[node name="LineEdit" type="LineEdit" parent="ScrollContainer/VBoxContainer"]
visible = false
margin_right = 58.0
margin_bottom = 24.0
[connection signal="file_selected" from="FileDialog" to="." method="_on_FileDialog_file_selected"]
[connection signal="pressed" from="VBoxContainer2/But_OpenFile" to="." method="_on_Button_pressed"]

View File

@ -0,0 +1,24 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://UserInterface/Title.tscn" type="PackedScene" id=1]
[ext_resource path="res://UserInterface/But_ChangeScene.tscn" type="PackedScene" id=2]
[ext_resource path="res://Screens/grabFocus.gd" type="Script" id=3]
[node name="Control" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
script = ExtResource( 3 )
[node name="Title" parent="." instance=ExtResource( 1 )]
anchor_left = 0.0
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = 0.0
margin_top = 0.0
margin_right = 0.0
margin_bottom = 0.0
text = "Multiplayer (temp)"
[node name="But_ChangeScene" parent="Title" instance=ExtResource( 2 )]
text = "Temp: back to menu"
next_scene_path = "res://Screens/MenuScreen.tscn"

View File

@ -0,0 +1,11 @@
#MENUSCREEN:
# Script purely to grab focus for tabbing control
extends Control
onready var settings = get_node("/root/GlobalSaveInstance").settingsInstance
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
theme=load(settings.themeFile)
$VBoxContainer/But_NewGame.grab_focus()

View File

@ -0,0 +1,90 @@
[gd_scene load_steps=7 format=2]
[ext_resource path="res://UserInterface/But_ChangeScene.tscn" type="PackedScene" id=1]
[ext_resource path="res://Screens/MenuScreen.gd" type="Script" id=2]
[ext_resource path="res://assets/liberation_serif_40pt.tres" type="DynamicFont" id=3]
[ext_resource path="res://UserInterface/Title.tscn" type="PackedScene" id=5]
[ext_resource path="res://assets/ui_controlNode_dark_theme.tres" type="Theme" id=6]
[ext_resource path="res://UserInterface/But_Quit.tscn" type="PackedScene" id=10]
[node name="MenuScreen" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
theme = ExtResource( 6 )
script = ExtResource( 2 )
[node name="Background" type="Panel" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
[node name="Title" parent="." instance=ExtResource( 5 )]
margin_top = 51.8676
margin_bottom = 117.868
custom_fonts/font = ExtResource( 3 )
[node name="VBoxContainer" type="VBoxContainer" parent="."]
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -119.0
margin_top = -152.0
margin_right = 119.0
margin_bottom = 152.0
rect_scale = Vector2( 1.04675, 1.07389 )
[node name="But_NewGame" parent="VBoxContainer" instance=ExtResource( 1 )]
margin_right = 238.0
margin_bottom = 40.0
next_scene_path = "res://Screens/PlayerSelection.tscn"
[node name="But_LoadGame" parent="VBoxContainer" instance=ExtResource( 1 )]
margin_top = 44.0
margin_right = 238.0
margin_bottom = 85.0
text = "Load Game"
next_scene_path = "res://Screens/LoadGame_temp.tscn"
[node name="But_Multiplayer" parent="VBoxContainer" instance=ExtResource( 1 )]
margin_top = 89.0
margin_right = 238.0
margin_bottom = 130.0
text = "Multiplayer"
next_scene_path = "res://Screens/Multiplayer_temp.tscn"
[node name="But_AddChar" parent="VBoxContainer" instance=ExtResource( 1 )]
margin_top = 134.0
margin_right = 238.0
margin_bottom = 174.0
text = "Add Character"
next_scene_path = "res://Screens/Character_Add.tscn"
[node name="But_ImportChar2" parent="VBoxContainer" instance=ExtResource( 1 )]
margin_top = 178.0
margin_right = 238.0
margin_bottom = 219.0
text = "Import Character"
next_scene_path = "res://Screens/ImportCharacter.tscn"
[node name="But_Settings" parent="VBoxContainer" instance=ExtResource( 1 )]
margin_top = 223.0
margin_right = 238.0
margin_bottom = 264.0
text = "Settings"
next_scene_path = "res://Screens/SettingsMenuControl.tscn"
[node name="But_Quit" parent="VBoxContainer" instance=ExtResource( 10 )]
margin_top = 268.0
margin_right = 238.0
margin_bottom = 304.0
[node name="Version" type="Label" parent="."]
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = -177.0
margin_top = -44.0
margin_right = -5.0
margin_bottom = -6.0
text = "Version: 0.0.0 (MVP)"

View File

@ -0,0 +1,11 @@
#MOREOPTIONS:
# Script purely to grab focus for tabbing control
extends Control
onready var settings = get_node("/root/GlobalSaveInstance").settingsInstance
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
theme=load(settings.themeFile)
$VBoxContainer/But_ResumeGame.grab_focus()

View File

@ -0,0 +1,79 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://UserInterface/But_ChangeScene.tscn" type="PackedScene" id=1]
[ext_resource path="res://UserInterface/But_ResumeGame.gd" type="Script" id=2]
[ext_resource path="res://Screens/MoreOptions.gd" type="Script" id=3]
[ext_resource path="res://assets/ui_controlNode_dark_theme.tres" type="Theme" id=6]
[node name="MoreOptions" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
theme = ExtResource( 6 )
script = ExtResource( 3 )
[node name="Background" type="Panel" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="VBoxContainer" type="VBoxContainer" parent="."]
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -119.0
margin_top = -152.0
margin_right = 119.0
margin_bottom = 152.0
rect_scale = Vector2( 1.04675, 1.07389 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="But_ResumeGame" type="Button" parent="VBoxContainer"]
margin_right = 238.0
margin_bottom = 36.0
text = "Resume Game"
script = ExtResource( 2 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="But_ShowHistory" parent="VBoxContainer" instance=ExtResource( 1 )]
margin_top = 40.0
margin_right = 238.0
margin_bottom = 125.0
text = "Show History"
next_scene_path = "res://Screens/HistoryViewer.tscn"
[node name="But_Chat" parent="VBoxContainer" instance=ExtResource( 1 )]
margin_top = 129.0
margin_right = 238.0
margin_bottom = 214.0
text = "Chat"
next_scene_path = "res://Screens/MenuScreen.tscn"
[node name="But_MainMenu" parent="VBoxContainer" instance=ExtResource( 1 )]
margin_top = 218.0
margin_right = 238.0
margin_bottom = 304.0
text = "Main Menu"
next_scene_path = "res://Screens/MenuScreen.tscn"
[node name="Version" type="Label" parent="."]
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = -177.0
margin_top = -44.0
margin_right = -5.0
margin_bottom = -6.0
text = "Version: 0.0.0"
__meta__ = {
"_edit_use_anchors_": false
}
[connection signal="button_up" from="VBoxContainer/But_ResumeGame" to="VBoxContainer/But_ResumeGame" method="_on_But_ResumeGame_button_up"]

View File

@ -0,0 +1,24 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://UserInterface/Title.tscn" type="PackedScene" id=1]
[ext_resource path="res://UserInterface/But_ChangeScene.tscn" type="PackedScene" id=2]
[ext_resource path="res://Screens/grabFocus.gd" type="Script" id=3]
[node name="Control" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
script = ExtResource( 3 )
[node name="Title" parent="." instance=ExtResource( 1 )]
anchor_left = 0.0
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = 0.0
margin_top = 0.0
margin_right = 0.0
margin_bottom = 0.0
text = "Multiplayer (temp)"
[node name="But_ChangeScene" parent="Title" instance=ExtResource( 2 )]
text = "Temp: back to menu"
next_scene_path = "res://Screens/MenuScreen.tscn"

View File

@ -0,0 +1,24 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://UserInterface/Title.tscn" type="PackedScene" id=1]
[ext_resource path="res://UserInterface/But_ChangeScene.tscn" type="PackedScene" id=2]
[ext_resource path="res://Screens/grabFocus.gd" type="Script" id=3]
[node name="Control" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
script = ExtResource( 3 )
[node name="Title" parent="." instance=ExtResource( 1 )]
anchor_left = 0.0
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = 0.0
margin_top = 0.0
margin_right = 0.0
margin_bottom = 0.0
text = "Multiplayer (temp)"
[node name="But_ChangeScene" parent="Title" instance=ExtResource( 2 )]
text = "Temp: back to menu"
next_scene_path = "res://Screens/MenuScreen.tscn"

View File

@ -0,0 +1,11 @@
#PLAYERSELECTION:
# Script purely to grab focus for tabbing control
extends Control
onready var settings = get_node("/root/GlobalSaveInstance").settingsInstance
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
theme=load(settings.themeFile)
$VBoxContainer/But_ChoosePlayer.grab_focus()

View File

@ -0,0 +1,66 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://UserInterface/But_ChangeScene.tscn" type="PackedScene" id=1]
[ext_resource path="res://Screens/PlayerSelection.gd" type="Script" id=2]
[ext_resource path="res://assets/ui_controlNode_dark_theme.tres" type="Theme" id=6]
[node name="PlayerSelection" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
theme = ExtResource( 6 )
script = ExtResource( 2 )
[node name="Background" type="Panel" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="VBoxContainer" type="VBoxContainer" parent="."]
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -119.0
margin_top = -152.0
margin_right = 119.0
margin_bottom = 152.0
rect_scale = Vector2( 1.04675, 1.07389 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="But_ChoosePlayer" parent="VBoxContainer" instance=ExtResource( 1 )]
margin_right = 238.0
margin_bottom = 98.0
text = "Import Character"
next_scene_path = "res://Screens/ImportCharacter.tscn"
[node name="But_AddChar" parent="VBoxContainer" instance=ExtResource( 1 )]
margin_top = 102.0
margin_right = 238.0
margin_bottom = 201.0
text = "Create Character"
next_scene_path = "res://Screens/Character_Add.tscn"
[node name="But_MainMenu" parent="VBoxContainer" instance=ExtResource( 1 )]
margin_top = 205.0
margin_right = 238.0
margin_bottom = 304.0
text = "Main Menu"
next_scene_path = "res://Screens/MenuScreen.tscn"
[node name="Version" type="Label" parent="."]
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = -177.0
margin_top = -44.0
margin_right = -5.0
margin_bottom = -6.0
text = "Version: 0.0.0"
__meta__ = {
"_edit_use_anchors_": false
}

View File

@ -0,0 +1,141 @@
extends Control
# https://stackoverflow.com/a/65774028
# Be Sure to make these Vars as OnReadys; you can read up on it here.
# Items to Fill the dropdown Lists
onready var keyboardContents = ["Qwerty", "Dvorak", "Alphabetical"]
onready var themeContents = ["White on Black", "Black on White"]
onready var saveObject = get_node('/root/GlobalSaveInstance')
#res://SettingsMenuControl.tscn
# Vars For UI Widgets
onready var NameVar = get_node('SettingsScroll/HBoxContainer/RootVboxPlayerPreferences/Label/VBoxPlayerPreferances/DisplayNameLineEdit')
onready var NRiskVar = get_node('SettingsScroll/HBoxContainer/RootVboxPlayerPreferences/Label/VBoxPlayerPreferances/VBoxRiskFactor/RiskSlider')
onready var FontVar = get_node("SettingsScroll/HBoxContainer/RootVboxVisualControls/VisualControlsLabel/VisualControlsVBox/FontSizeSlider")
onready var BrightnessVar = get_node('SettingsScroll/HBoxContainer/RootVboxVisualControls/VisualControlsLabel/VisualControlsVBox/BrightnessSlider')
onready var VolumeVar = get_node("SettingsScroll/HBoxContainer/RootVboxGeneralSettings/GeneralSettingsLabel/VBoxContainer/VolumeSlider")
onready var ClosedCaptionsVar = get_node('SettingsScroll/HBoxContainer/RootVboxGeneralSettings/GeneralSettingsLabel/VBoxContainer/HBoxClosedCaptions/ClosedCaptionsCheckBox')
onready var ConsoleCommandVar = get_node('SettingsScroll/HBoxContainer/RootVboxGeneralSettings/GeneralSettingsLabel/VBoxContainer/HBoxDevConsole/DevConsoleCheckbox')
onready var saveButton = get_node("HBoxBottomRow/SaveButton")
onready var bKeyboardEnabled = get_node("SettingsScroll/HBoxContainer/RootVboxVisualControls2/Label2/VBoxContainer/HBoxVirtualKeyboardEnabled/VisualKeyboardCheckBox")
onready var keyboardLayoutList = get_node('SettingsScroll/HBoxContainer/RootVboxVisualControls2/Label2/VBoxContainer/LayoutItemList')
onready var themeChoiceList = get_node('SettingsScroll/HBoxContainer/RootVboxVisualControls2/Label2/VBoxContainer/ThemeItemList')
var iniFile = ConfigFile.new()
func saveToInstance():
#Save to Singleton, so saveFile does not need to be constantly read
saveObject.settingsInstance.inputName = NameVar.text
saveObject.settingsInstance.riskFactor = NRiskVar.value
saveObject.settingsInstance.fontSize = FontVar.value
saveObject.settingsInstance.volume = VolumeVar.value
saveObject.settingsInstance.bClosedCaptions = ClosedCaptionsVar.is_pressed()
saveObject.settingsInstance.bdevConsole = ConsoleCommandVar.is_pressed()
saveObject.settingsInstance.bVirtualKeyboard = bKeyboardEnabled.is_pressed()
var savedKeyboardItems = keyboardLayoutList.get_selected_items()
var keyboardSelection = savedKeyboardItems[0]
saveObject.settingsInstance.visualKeyboardLayout = keyboardSelection
var savedThemeItems = themeChoiceList.get_selected_items()
var themeSelection = savedThemeItems[0]
saveObject.settingsInstance.themeChoiceInt = themeSelection
#DKM TEMP: for web version, setting this to the singleton without requiring reprocess of file
if(saveObject.settingsInstance.themeChoiceInt == 1):
saveObject.settingsInstance.themeFile = "res://assets/ui_controlNode_light_theme.tres"
else:
saveObject.settingsInstance.themeFile = "res://assets/ui_controlNode_dark_theme.tres"
#Load selected theme:
theme=load(saveObject.settingsInstance.themeFile)
#Trigger re-load of the file name
#saveObject.load_settings_file()
#theme=load(saveObject.settingsInstance.themeFile)
func saveFile():
iniFile.set_value("player_preferences", "player_name", NameVar.text)
iniFile.set_value("player_preferences", "risk_threshold", NRiskVar.value)
iniFile.set_value("visual_controls", "font_size", FontVar.value)
iniFile.set_value("visual_controls", "brightness", BrightnessVar.value)
iniFile.set_value("general_settings", "volume", VolumeVar.value)
iniFile.set_value("general_settings", "closed_captions", ClosedCaptionsVar.is_pressed())
iniFile.set_value("general_settings", "dev_console", ConsoleCommandVar.is_pressed())
print(keyboardLayoutList.get_selected_items())
var savedKeyboardItems = keyboardLayoutList.get_selected_items()
var keyboardSelection = savedKeyboardItems[0]
var savedThemeItems = themeChoiceList.get_selected_items()
var themeSelection = savedThemeItems[0]
print(typeof(keyboardSelection))
iniFile.set_value("virtual_keyboard", "keyboard_layout", keyboardSelection)
iniFile.set_value("theme", "theme_selection", themeSelection)
iniFile.save("res://_userFiles/PlayerPreferences.cfg")
#DKM TEMP: can this be done at singleton, initial load level instead of here?
func loadFile():
pass
func _process(_delta):
if saveButton.pressed == true:
if NameVar.text == "":
print("Please input a name")
if NameVar.text != "":
# Save to the template instance
saveToInstance()
saveFile()
print('saveFileRan')
func _ready():
#Get the singleton's values for initial settings:
NameVar.text = saveObject.settingsInstance.inputName
NRiskVar.value = saveObject.settingsInstance.riskFactor
FontVar.value = saveObject.settingsInstance.fontSize
ClosedCaptionsVar.pressed = saveObject.settingsInstance.bClosedCaptions
ConsoleCommandVar.pressed = saveObject.settingsInstance.bdevConsole
bKeyboardEnabled.pressed = saveObject.settingsInstance.bVirtualKeyboard
print(NameVar.get_path())
# Init Keyboard Layout List
for i in range(3):
keyboardLayoutList.add_item(keyboardContents[i],null,true)
keyboardLayoutList.select(0,true)
# Init Theme Choice List
for i in range(2):
themeChoiceList.add_item(themeContents[i],null,true)
keyboardLayoutList.select(saveObject.settingsInstance.visualKeyboardLayout,true)
themeChoiceList.select(saveObject.settingsInstance.themeChoiceInt,true)
#Load selected theme:
theme=load(saveObject.settingsInstance.themeFile)

View File

@ -0,0 +1,308 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://Screens/SettingsMenuConfig.gd" type="Script" id=1]
[ext_resource path="res://assets/liberation_serif.tres" type="DynamicFont" id=2]
[ext_resource path="res://UserInterface/But_ChangeScene.gd" type="Script" id=3]
[sub_resource type="Theme" id=1]
default_font = ExtResource( 2 )
[node name="Control" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
theme = SubResource( 1 )
script = ExtResource( 1 )
[node name="Panel" type="Panel" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
[node name="HBoxBottomRow" type="HBoxContainer" parent="."]
margin_right = 146.0
margin_bottom = 25.0
alignment = 1
[node name="SaveButton" type="Button" parent="HBoxBottomRow"]
margin_right = 97.0
margin_bottom = 25.0
text = "Save Settings"
[node name="But_ChangeScene" type="Button" parent="HBoxBottomRow"]
margin_left = 101.0
margin_right = 146.0
margin_bottom = 25.0
size_flags_vertical = 3
text = "Back"
script = ExtResource( 3 )
__meta__ = {
"_edit_use_anchors_": false
}
next_scene_path = "res://Screens/MenuScreen.tscn"
[node name="SettingsScroll" type="ScrollContainer" parent="."]
anchor_top = 0.568
anchor_right = 0.601
anchor_bottom = 0.669
margin_left = 20.0
margin_top = -300.8
margin_right = 4.57599
margin_bottom = 38.6
[node name="HBoxContainer" type="HBoxContainer" parent="SettingsScroll"]
margin_right = 597.0
margin_bottom = 19.0
custom_constants/separation = 60
alignment = 1
[node name="RootVboxVisualControls" type="VBoxContainer" parent="SettingsScroll/HBoxContainer"]
margin_right = 98.0
margin_bottom = 19.0
[node name="VisualControlsLabel" type="Label" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls"]
margin_right = 98.0
margin_bottom = 19.0
text = "Visual Controls"
[node name="VisualControlsVBox" type="VBoxContainer" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls/VisualControlsLabel"]
anchor_left = 0.5
anchor_right = 0.5
margin_left = -77.5
margin_top = 30.0
margin_right = 77.5
margin_bottom = 52.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="HBoxFontSize" type="HBoxContainer" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls/VisualControlsLabel/VisualControlsVBox"]
margin_right = 155.0
margin_bottom = 19.0
[node name="FontLabel" type="Label" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls/VisualControlsLabel/VisualControlsVBox/HBoxFontSize"]
margin_right = 64.0
margin_bottom = 19.0
text = "Font Size:"
[node name="FontSizeSlider" type="HSlider" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls/VisualControlsLabel/VisualControlsVBox"]
margin_top = 23.0
margin_right = 155.0
margin_bottom = 39.0
min_value = 1.0
max_value = 5.0
value = 5.0
rounded = true
tick_count = 10
ticks_on_borders = true
[node name="BrightnessLabel" type="Label" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls/VisualControlsLabel/VisualControlsVBox"]
margin_top = 43.0
margin_right = 155.0
margin_bottom = 62.0
text = "Brightness:"
[node name="BrightnessSlider" type="HSlider" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls/VisualControlsLabel/VisualControlsVBox"]
margin_top = 66.0
margin_right = 155.0
margin_bottom = 82.0
min_value = 1.0
max_value = 5.0
value = 5.0
rounded = true
tick_count = 10
ticks_on_borders = true
[node name="RootVboxPlayerPreferences" type="VBoxContainer" parent="SettingsScroll/HBoxContainer"]
margin_left = 158.0
margin_right = 275.0
margin_bottom = 19.0
[node name="Label" type="Label" parent="SettingsScroll/HBoxContainer/RootVboxPlayerPreferences"]
margin_right = 117.0
margin_bottom = 19.0
text = "Player Preferances"
[node name="VBoxPlayerPreferances" type="VBoxContainer" parent="SettingsScroll/HBoxContainer/RootVboxPlayerPreferences/Label"]
margin_left = -18.5
margin_top = 30.0
margin_right = 126.5
margin_bottom = 125.0
[node name="HBoxDisplayName" type="HBoxContainer" parent="SettingsScroll/HBoxContainer/RootVboxPlayerPreferences/Label/VBoxPlayerPreferances"]
margin_right = 145.0
margin_bottom = 19.0
[node name="DisplayNameLabel" type="Label" parent="SettingsScroll/HBoxContainer/RootVboxPlayerPreferences/Label/VBoxPlayerPreferances/HBoxDisplayName"]
margin_right = 95.0
margin_bottom = 19.0
text = "Display Name:"
[node name="DisplayNameLineEdit" type="LineEdit" parent="SettingsScroll/HBoxContainer/RootVboxPlayerPreferences/Label/VBoxPlayerPreferances"]
margin_top = 23.0
margin_right = 145.0
margin_bottom = 52.0
[node name="VBoxRiskFactor" type="VBoxContainer" parent="SettingsScroll/HBoxContainer/RootVboxPlayerPreferences/Label/VBoxPlayerPreferances"]
margin_top = 56.0
margin_right = 145.0
margin_bottom = 95.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="HBoxRiskFactor" type="HBoxContainer" parent="SettingsScroll/HBoxContainer/RootVboxPlayerPreferences/Label/VBoxPlayerPreferances/VBoxRiskFactor"]
margin_right = 145.0
margin_bottom = 19.0
[node name="RiskFactorLabel" type="Label" parent="SettingsScroll/HBoxContainer/RootVboxPlayerPreferences/Label/VBoxPlayerPreferances/VBoxRiskFactor/HBoxRiskFactor"]
margin_right = 145.0
margin_bottom = 19.0
text = "Risk Factor Threshold:"
[node name="RiskSlider" type="HSlider" parent="SettingsScroll/HBoxContainer/RootVboxPlayerPreferences/Label/VBoxPlayerPreferances/VBoxRiskFactor"]
margin_top = 23.0
margin_right = 145.0
margin_bottom = 39.0
min_value = 1.0
max_value = 5.0
value = 5.0
rounded = true
tick_count = 10
ticks_on_borders = true
[node name="RootVboxGeneralSettings" type="VBoxContainer" parent="SettingsScroll/HBoxContainer"]
margin_left = 335.0
margin_right = 439.0
margin_bottom = 19.0
[node name="GeneralSettingsLabel" type="Label" parent="SettingsScroll/HBoxContainer/RootVboxGeneralSettings"]
margin_right = 104.0
margin_bottom = 19.0
text = "General Settings"
[node name="VBoxContainer" type="VBoxContainer" parent="SettingsScroll/HBoxContainer/RootVboxGeneralSettings/GeneralSettingsLabel"]
anchor_left = 0.5
anchor_right = 0.5
margin_left = -77.5
margin_top = 30.0
margin_right = 77.5
margin_bottom = 120.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Label" type="Label" parent="SettingsScroll/HBoxContainer/RootVboxGeneralSettings/GeneralSettingsLabel/VBoxContainer"]
margin_right = 155.0
margin_bottom = 19.0
rect_pivot_offset = Vector2( 62, 14 )
text = "Volume:"
[node name="VolumeSlider" type="HSlider" parent="SettingsScroll/HBoxContainer/RootVboxGeneralSettings/GeneralSettingsLabel/VBoxContainer"]
margin_top = 23.0
margin_right = 155.0
margin_bottom = 39.0
max_value = 10.0
rounded = true
tick_count = 10
ticks_on_borders = true
[node name="HBoxClosedCaptions" type="HBoxContainer" parent="SettingsScroll/HBoxContainer/RootVboxGeneralSettings/GeneralSettingsLabel/VBoxContainer"]
margin_top = 43.0
margin_right = 155.0
margin_bottom = 70.0
[node name="ClosedCaptionsLabel" type="Label" parent="SettingsScroll/HBoxContainer/RootVboxGeneralSettings/GeneralSettingsLabel/VBoxContainer/HBoxClosedCaptions"]
margin_top = 4.0
margin_right = 108.0
margin_bottom = 23.0
text = "Closed Captions:"
[node name="ClosedCaptionsCheckBox" type="CheckBox" parent="SettingsScroll/HBoxContainer/RootVboxGeneralSettings/GeneralSettingsLabel/VBoxContainer/HBoxClosedCaptions"]
margin_left = 112.0
margin_right = 136.0
margin_bottom = 27.0
[node name="HBoxDevConsole" type="HBoxContainer" parent="SettingsScroll/HBoxContainer/RootVboxGeneralSettings/GeneralSettingsLabel/VBoxContainer"]
margin_top = 74.0
margin_right = 155.0
margin_bottom = 101.0
[node name="DevConsoleLabel" type="Label" parent="SettingsScroll/HBoxContainer/RootVboxGeneralSettings/GeneralSettingsLabel/VBoxContainer/HBoxDevConsole"]
margin_top = 4.0
margin_right = 126.0
margin_bottom = 23.0
text = "Developer Console:"
[node name="DevConsoleCheckbox" type="CheckBox" parent="SettingsScroll/HBoxContainer/RootVboxGeneralSettings/GeneralSettingsLabel/VBoxContainer/HBoxDevConsole"]
margin_left = 130.0
margin_right = 154.0
margin_bottom = 27.0
[node name="RootVboxVisualControls2" type="VBoxContainer" parent="SettingsScroll/HBoxContainer"]
margin_left = 499.0
margin_right = 597.0
margin_bottom = 19.0
[node name="Label2" type="Label" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls2"]
margin_right = 98.0
margin_bottom = 19.0
text = "Visual Controls"
[node name="VBoxContainer" type="VBoxContainer" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls2/Label2"]
anchor_left = 0.5
anchor_right = 0.5
margin_left = -77.5
margin_top = 30.0
margin_right = 77.5
margin_bottom = 52.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="HBoxThemes" type="HBoxContainer" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls2/Label2/VBoxContainer"]
margin_right = 155.0
margin_bottom = 19.0
[node name="ThemesLabel" type="Label" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls2/Label2/VBoxContainer/HBoxThemes"]
margin_right = 119.0
margin_bottom = 19.0
text = "Theme Preference:"
[node name="ThemeItemList" type="ItemList" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls2/Label2/VBoxContainer"]
margin_top = 23.0
margin_right = 155.0
margin_bottom = 32.0
auto_height = true
[node name="HBoxVirtualKeyboardEnabled" type="HBoxContainer" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls2/Label2/VBoxContainer"]
margin_top = 36.0
margin_right = 155.0
margin_bottom = 63.0
[node name="VisualKeyBoardLabel" type="Label" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls2/Label2/VBoxContainer/HBoxVirtualKeyboardEnabled"]
margin_top = 4.0
margin_right = 110.0
margin_bottom = 23.0
text = "Virtual Keyboard"
[node name="VisualKeyboardCheckBox" type="CheckBox" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls2/Label2/VBoxContainer/HBoxVirtualKeyboardEnabled"]
margin_left = 114.0
margin_right = 138.0
margin_bottom = 27.0
[node name="HBoxKeyboardLayout" type="HBoxContainer" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls2/Label2/VBoxContainer"]
margin_top = 67.0
margin_right = 155.0
margin_bottom = 86.0
[node name="LayoutLabel" type="Label" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls2/Label2/VBoxContainer/HBoxKeyboardLayout"]
margin_right = 120.0
margin_bottom = 19.0
text = "Layout Preference:"
[node name="LayoutItemList" type="ItemList" parent="SettingsScroll/HBoxContainer/RootVboxVisualControls2/Label2/VBoxContainer"]
margin_top = 90.0
margin_right = 155.0
margin_bottom = 99.0
auto_height = true
[connection signal="button_up" from="HBoxBottomRow/But_ChangeScene" to="HBoxBottomRow/But_ChangeScene" method="_on_But_NewGame_button_up"]

View File

@ -0,0 +1,17 @@
extends Button
# Declare member variables here. Examples:
# var a: int = 2
# var b: String = "text"
var tempToggle = 0
func _on_Button_button_up():
var controlNode = get_node("../../")
print(controlNode.name)
if(tempToggle == 0):
controlNode.theme=load("res://assets/ui_controlNode_dark_theme.tres")
tempToggle = 1
else:
controlNode.theme=load("res://assets/ui_controlNode_light_theme.tres")
tempToggle = 0

View File

@ -0,0 +1,7 @@
extends Control
#GRAB FOCUS: simple script for temp files to grab focus
func _ready() -> void:
$Title/But_ChangeScene.grab_focus()

View File

@ -0,0 +1,18 @@
#BUT_CHANGESCENE:
# Generic template script allowing GUI linking of scenes by button press.
tool
extends Button
#Creates param usable in the UI; and the params next to export make it string and file browser
export(String, FILE) var next_scene_path: = ""
func _on_But_NewGame_button_up():
var _changeResponse = get_tree().change_scene(next_scene_path)
func _get_configuration_warning() -> String:
return "next_scene_path must be set for this button to work" if next_scene_path == "" else ""

View File

@ -0,0 +1,15 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://UserInterface/But_ChangeScene.gd" type="Script" id=1]
[node name="But_ChangeScene" type="Button"]
margin_right = 130.0
margin_bottom = 24.0
size_flags_vertical = 3
text = "New Game"
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
[connection signal="button_up" from="." to="." method="_on_But_NewGame_button_up"]

View File

@ -0,0 +1,39 @@
#BUT_HISTORY:
# Unique script attached to the But_History to hide/show history versus
# current game page.
tool
extends Button
onready var game_history_array = get_node("/root/History").historyScreensSingleton.output_history_array
var is_history = false
func _on_But_History_button_up():
var history_pager_button = get_node("../../ItemList/But_History_Page")
var history_rows_node = get_node("../../GameInfo/HistoryRows")
var current_text_node = get_node("../../GameInfo/CurrentText")
var option_one = get_node("../../InputArea/VBoxContainer/option1")
var option_two = get_node("../../InputArea/VBoxContainer/option2")
var option_three = get_node("../../InputArea/VBoxContainer/option3")
if(!is_history):
if(game_history_array != null):
history_rows_node.add_child(game_history_array[0])
history_pager_button.show()
history_rows_node.show()
current_text_node.hide()
option_one.hide()
option_two.hide()
option_three.hide()
is_history = true
else:
history_pager_button.hide()
history_rows_node.hide()
current_text_node.show()
option_one.show()
option_two.show()
option_three.show()
is_history = false

View File

@ -0,0 +1,21 @@
#BUT_HISTORY_PAGE:
# Unique paging script for showing next page in the history game's history
# array.
tool
extends Button
var current_page = 0
func _on_But_History_Page_button_up():
var game_history_array = get_node("/root/History").historyScreensSingleton.output_history_array
var history_rows_node = get_node("../../GameInfo/HistoryRows")
if(current_page < game_history_array.size()-1):
current_page += 1
else:
current_page = 0
history_rows_node.remove_child(history_rows_node.get_child(0))
history_rows_node.add_child(game_history_array[current_page])

View File

@ -0,0 +1,28 @@
#BUT_CHANGESCENE:
# Generic template script allowing GUI linking of scenes by button press.
tool
extends Button
#Creates param usable in the UI; and the params next to export make it string and file browser
export(String, FILE) var next_scene_path: = ""
onready var pSingleton = get_node("/root/PlayerCharacter").pc
var tempToggle = 0
func _on_But_NewGame_button_up():
if(pSingleton.pcText.length() < 1):
#print("GOT IT! Popup msg: " + $PopupDialog/WarnText.text)
var alertPopup = get_node("../PopupDialog")
var alertPopupText = get_node("../PopupDialog/WarnText")
alertPopupText.text = "No player was loaded! Please load a character to begin game."
alertPopup.popup_centered()
return
else:
var _changeResponse = get_tree().change_scene(next_scene_path)
func _get_configuration_warning() -> String:
return "next_scene_path must be set for this button to work" if next_scene_path == "" else ""

View File

@ -0,0 +1,43 @@
#BUT_QUIT:
# Unique script for ending a game. Will additionally perform or call needed
# shut down and close-out functionality.
extends Button
#var history_JSON = "user://history.json"
var history_JSON = "res://_userFiles/history.json"
#DKM TEMP: save history is only here temporarily -- needs to move upstream.
func _on_But_Quit_button_up():
#Stops execution but broswer window remains
get_tree().quit()
#DKM TEMP: temporarily de-activating while working:
#For web: redirect result:
# if OS.get_name() == "HTML5":
# JavaScript.eval("window.location.href='https://rpgresearch.com/'")
# else:
# var _openReturn= OS.shell_open("https://rpgresearch.com/")
#JSON: requires dictionaries:
#func _saveHistory_JSON() -> void:
# var history_screens_arr = get_node("/root/History").historyScreensSingleton.output_history_array
# var file = File.new()
# file.open(history_JSON, File.WRITE)
# file.store_string(to_json(history_screens_arr))
#
# file.close()
# # #DKM TEMP:
# print("Saved history array size should be: " + str(history_screens_arr.size()))
#DKM TEMP:
#tres file:
#func _saveHistory() -> void:
# var history_screens = get_node("/root/History").historyScreensSingleton
# assert(ResourceSaver.save("user://history.tres", history_screens)==OK)
# #DKM TEMP:
# print("Saved history array size: " + str(history_screens.output_history_array.size()))

View File

@ -0,0 +1,15 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://UserInterface/But_Quit.gd" type="Script" id=1]
[node name="But_Quit" type="Button"]
margin_top = 240.0
margin_right = 179.0
margin_bottom = 284.0
text = "Quit"
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
[connection signal="button_up" from="." to="." method="_on_But_Quit_button_up"]

View File

@ -0,0 +1,14 @@
tool
extends Button
func _on_But_ResumeGame_button_up():
var root = get_node("/root")
var thisScene = get_node("/root/MoreOptions")
var gameSingleton = get_node("/root/GameCurrent")
var gameScene = gameSingleton.gameCurrent_scene
root.remove_child(thisScene)
#DKM TEMP: cleanup this scene!
thisScene.queue_free()
root.add_child(gameScene)

View File

@ -0,0 +1,80 @@
#BUT_SAVESETTINGS:
# Unique script for saving settings on player settings scene.
#Tool lets you any code in editor, such as plugins
tool
extends Button
#Creates param usable in the UI; and the params next to export make it string and file browser
export(String, FILE) var next_scene_path: = ""
#Button response: save settings and move on.
func _on_But_NewGame_button_up():
var inputName = get_node("../../VBoxContainer/HBoxContainer/input_name")
var inputRisk = get_node("../../VBoxContainer/HBoxContainer2/input_risk")
_saveSettings(inputName.text, inputRisk.text)
get_tree().change_scene(next_scene_path)
#HELPER FUNCTIONS:
func _get_configuration_warning() -> String:
return "next_scene_path must be set for this button to work" if next_scene_path == "" else ""
#CONFIG/INI SAVE:
func _saveSettings(inputSettings : String, riskFactor : String) -> void:
var player_settings = get_node("/root/PlayerSettings")
player_settings.playerSettingsSingleton.inputName = inputSettings
player_settings.playerSettingsSingleton.riskFactor = riskFactor
var config = ConfigFile.new()
config.set_value("Temp player","InputSettings", inputSettings)
config.set_value("Temp player","RiskFactor", riskFactor)
config.save("user://settings.cfg")
#JSON SAVE:
#func _saveSettings(inputSettings : String, riskFactor : String) -> void:
# var player_settings = get_node("/root/PlayerSettings")
# player_settings.playerSettingsSingleton.inputName = inputSettings
# player_settings.playerSettingsSingleton.riskFactor = riskFactor
# #Temp:
# var temp_manual_JSON = {
# "playerSettingsTemplate": {
# "inputName": inputSettings,
# "riskFactor": riskFactor
# }
# }
#
# #Save to file (JSON for now)
# var settings_file = "user://testPlayerSettings.sav"
# var file = File.new()
# if file.open(settings_file, File.WRITE) != 0:
# print("Cannot write temporary file to: " + settings_file)
# else:
# file.store_line(to_json(temp_manual_JSON))
# file.close()
#****This save Settings functions as designed; but modified to work with alternate approach of loading
#func _saveSettings(inputSettings : String, riskFactor : String) -> void:
#Debugging:
# print("Input name: " + inputSettings + "; and risk factor set to : " + riskFactor)
# var player_settings = get_node("/root/PlayerSettings")
# player_settings.playerSettingsSingleton.inputName = inputSettings
# player_settings.playerSettingsSingleton.riskFactor = riskFactor
#Save to file (for now)
# if settings_save_file_name == "":
# settings_save_file_name = "settings.save"
# var settings_file = "user://" + settings_save_file_name
# var file = File.new()
# file.open(settings_file, File.WRITE)
# file.store_var(player_settings.playerSettingsSingleton.inputName)
#DKM TEMP: To save object; removed for testing
#file.store_var(player_settings.playerSettingsSingleton, true)
# file.close()

View File

@ -0,0 +1,5 @@
extends VBoxContainer
func set_text(input: String, response: String):
$InputHistory.text = input
$Response.text = response

View File

@ -0,0 +1,22 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://UserInterface/Response.tscn" type="PackedScene" id=2]
[ext_resource path="res://UserInterface/InputResponse.gd" type="Script" id=3]
[node name="InputResponse" type="VBoxContainer"]
margin_right = 984.0
margin_bottom = 68.0
script = ExtResource( 3 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="InputHistory" type="Label" parent="."]
margin_right = 984.0
margin_bottom = 14.0
text = " > This is what user selected"
autowrap = true
[node name="Response" parent="." instance=ExtResource( 2 )]
margin_top = 18.0
margin_bottom = 32.0

View File

@ -0,0 +1,49 @@
#LOCALE CLASS:
# Template script for the Locale scene; allows for connecting exits, and also
# maintains a visited bool (currently un-used) and takes additional
# options via the GUI:
# 1. Name
# 2. Description
# 3. The 3 option strings available at the location
#
extends PanelContainer
#Allows Godot to handle autocomplete and 'register' class
class_name Locale
var locale_name = "Location Name"
var locale_description = "This is the description of the location."
var locale_action = "Default action"
var locale_action_params = []
var options_array = []
var destinations_array = []
var visited = false;
var exits: Dictionary = {}
#DKM TEMP: right now connects both directions, but can make an alt func that c
# connects just one way for example (for one-way-doors)
# currently not in use, but the override defaults false but if passed can let
# you apply custom direction
func connect_exit(direction: String, locale: Locale, override_direction: bool = false):
if(!override_direction):
match direction:
"west":
exits[direction] = locale
locale.exits["east"] = self
"east":
exits[direction] = locale
locale.exits["west"] = self
"north":
exits[direction] = locale
locale.exits["south"] = self
"south":
exits[direction] = locale
locale.exits["north"] = self
_:
printerr("Tried to connect invalid direction: %s", direction)
else:
exits[direction] = locale

View File

@ -0,0 +1,32 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://UserInterface/Locale.gd" type="Script" id=1]
[node name="Locale" type="PanelContainer"]
margin_right = 250.001
margin_bottom = 200.0
rect_min_size = Vector2( 250, 200 )
script = ExtResource( 1 )
[node name="MarginContainer" type="MarginContainer" parent="."]
margin_left = 7.0
margin_top = 7.0
margin_right = 243.001
margin_bottom = 193.0
[node name="Rows" type="VBoxContainer" parent="MarginContainer"]
margin_right = 236.0
margin_bottom = 186.0
[node name="LocaleName" type="Label" parent="MarginContainer/Rows"]
margin_right = 236.0
margin_bottom = 14.0
text = "Locale Name"
align = 1
[node name="LocaleDescription" type="Label" parent="MarginContainer/Rows"]
margin_top = 18.0
margin_right = 236.0
margin_bottom = 49.0
text = "This is the description text for the locale. "
autowrap = true

View File

@ -0,0 +1,10 @@
extends Button
signal option_pressed(destinationLabel)
var destinationLabel
#DKM TEMP: test
func _on_Option_button_up() -> void:
print("Button pushed!")
emit_signal("option_pressed", destinationLabel)

View File

@ -0,0 +1,13 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://UserInterface/Option.gd" type="Script" id=1]
[node name="Option" type="Button"]
margin_top = 30.0
margin_right = 984.0
margin_bottom = 68.0
text = "Option # "
align = 0
script = ExtResource( 1 )
[connection signal="button_up" from="." to="." method="_on_Option_button_up"]

View File

@ -0,0 +1,11 @@
[gd_scene format=2]
[node name="Response" type="Label"]
margin_top = 30.0
margin_right = 984.0
margin_bottom = 68.0
text = "Game text continues here... "
autowrap = true
__meta__ = {
"_edit_use_anchors_": false
}

View File

@ -0,0 +1,14 @@
[gd_scene format=2]
[node name="Title" type="Label"]
anchor_left = 0.5
anchor_right = 0.5
margin_left = -110.5
margin_top = 114.422
margin_right = 110.5
margin_bottom = 180.422
text = "Main Menu"
align = 1
__meta__ = {
"_edit_use_anchors_": false
}

View File

@ -0,0 +1,72 @@
#COMMAND PROCESSOR:
# Handles player input, including navigation on the map
extends Node
var current_locale = null
var current_opt1 = null
var current_opt2 = null
var current_opt3 = null
#Allows us to pass in the starting location
func initialize(starting_locale) -> String:
current_opt1 = get_node("../Background/MarginContainer/Rows/InputArea/VBoxContainer/option1")
current_opt2 = get_node("../Background/MarginContainer/Rows/InputArea/VBoxContainer/option2")
current_opt3 = get_node("../Background/MarginContainer/Rows/InputArea/VBoxContainer/option3")
current_opt1.grab_focus()
return change_room(starting_locale)
#DKM TEMP: this must load from files written by toolset
#Function that loads response from the option string chosen
func process_command(option: String) -> String:
var optCmd_Action = option.split(": ", false)
if (optCmd_Action.size() < 2):
return "Error: no valid command and action in option!"
match optCmd_Action[0]:
"Go":
return go(optCmd_Action[1])
"Wait":
return "You rest a bit. Now what?"
"Talk":
return talk(optCmd_Action[1])
"Examine":
return examine(optCmd_Action[1])
"Scream":
return "You yell :'" + optCmd_Action[1].to_upper() +"'!!"
_:
return "Nothing happens! Command word was: " + optCmd_Action[0]
func go(action: String) -> String:
var destination = action.split(" ", false)[0]
if current_locale.exits.keys().has(destination):
var change_response = change_room(current_locale.exits[destination])
return PoolStringArray(["You go %s." % destination, change_response]).join("\n")
else:
return "That is not a valid place to go!"
#DKM TEMP: do an examination dictionary lookup here?
func examine(action: String) -> String:
return action.to_upper() + " looks about how you'd expect. [Dictionary lookup forthcoming]"
#DKM TEMP: dialog entry needed -- temp
func talk(action: String) -> String:
var target = action.split("to ", false)[0].to_upper()
return target + " has little to say! [Dialog forthcoming]"
#Helper:
func change_room(new_room: Locale) -> String:
current_locale = new_room
current_opt1.text = new_room.option1
current_opt2.text = new_room.option2
current_opt3.text = new_room.option3
var exit_string = PoolStringArray(new_room.exits.keys()).join(" ")
var strings = PoolStringArray([
"You are now in: " + new_room.locale_name + ". " +
new_room.locale_description,
"Exits: " + exit_string
]).join("\n")
return strings;

View File

@ -0,0 +1,18 @@
#LOCALE MANAGER:
# Temporary script holds connections between map items, using the two-way
# connect_exit script available on Location class to wire up map.
extends Node
#DKM TEMP: must load from toolset
func _ready() -> void:
#load_module()
$Loc_Boat.connect_exit("east", $Loc_Shore)
$Loc_Shore.connect_exit("north", $Loc_WoodsA1)
$Loc_WoodsA1.connect_exit("north", $Loc_WoodsA2)
$Loc_WoodsA2.connect_exit("east", $Loc_WoodsA3)
$Loc_WoodsA3.connect_exit("north", $Loc_WoodsA4)

View File

@ -0,0 +1,14 @@
Name: Bruno
Class: Seer
Level: 22
S: 9
I: 11
W: 16
D: 14
C: 10
Chr: 8
HP: 31
Description: slight, anxious seer who hides from view whenever possible, due to the negative ramifications of his prophetic abilities.

View File

@ -0,0 +1,28 @@
[gd_resource type="Theme" load_steps=3 format=2]
[ext_resource path="res://assets/sbf_black.tres" type="StyleBox" id=1]
[ext_resource path="res://assets/liberation_serif_30pt.tres" type="DynamicFont" id=2]
[resource]
Button/colors/font_color = Color( 0.878431, 0.878431, 0.878431, 1 )
Button/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 )
Button/colors/font_color_hover = Color( 0.94, 0.94, 0.94, 1 )
Button/colors/font_color_pressed = Color( 1, 1, 1, 1 )
Button/constants/hseparation = 2
Button/fonts/font = ExtResource( 2 )
Button/styles/disabled = null
Button/styles/focus = null
Button/styles/hover = null
Button/styles/normal = ExtResource( 1 )
Button/styles/pressed = null
Label/colors/font_color = Color( 1, 1, 1, 1 )
Label/colors/font_color_shadow = Color( 0, 0, 0, 0 )
Label/colors/font_outline_modulate = Color( 1, 1, 1, 1 )
Label/constants/line_spacing = 3
Label/constants/shadow_as_outline = 0
Label/constants/shadow_offset_x = 1
Label/constants/shadow_offset_y = 1
Label/fonts/font = null
Label/styles/normal = null
Panel/styles/panel = ExtResource( 1 )
VBoxContainer/constants/separation = 4

View File

@ -0,0 +1,6 @@
[gd_resource type="Theme" load_steps=2 format=2]
[ext_resource path="res://assets/liberation_serif_20pt.tres" type="DynamicFont" id=1]
[resource]
default_font = ExtResource( 1 )

View File

@ -0,0 +1,6 @@
[gd_resource type="Theme" load_steps=2 format=2]
[ext_resource path="res://assets/liberation_serif_20pt.tres" type="DynamicFont" id=1]
[resource]
default_font = ExtResource( 1 )

View File

@ -0,0 +1,25 @@
[gd_resource type="Theme" load_steps=3 format=2]
[ext_resource path="res://assets/liberation_serif_30pt.tres" type="DynamicFont" id=1]
[sub_resource type="StyleBoxFlat" id=1]
bg_color = Color( 0, 0, 0, 1 )
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color( 1, 1, 1, 1 )
[resource]
default_font = ExtResource( 1 )
Button/colors/font_color = Color( 1, 1, 1, 1 )
Button/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 )
Button/colors/font_color_hover = Color( 0.94, 0.94, 0.94, 1 )
Button/colors/font_color_pressed = Color( 1, 1, 1, 1 )
Button/constants/hseparation = 2
Button/fonts/font = null
Button/styles/disabled = null
Button/styles/focus = null
Button/styles/hover = null
Button/styles/normal = SubResource( 1 )
Button/styles/pressed = null

View File

@ -0,0 +1,25 @@
[gd_resource type="Theme" load_steps=3 format=2]
[ext_resource path="res://assets/liberation_serif_30pt.tres" type="DynamicFont" id=1]
[sub_resource type="StyleBoxFlat" id=1]
bg_color = Color( 0, 0, 0, 1 )
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color( 1, 1, 1, 1 )
[resource]
default_font = ExtResource( 1 )
Button/colors/font_color = Color( 0.00392157, 0.00392157, 0.00392157, 1 )
Button/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 )
Button/colors/font_color_hover = Color( 0.94, 0.94, 0.94, 1 )
Button/colors/font_color_pressed = Color( 1, 1, 1, 1 )
Button/constants/hseparation = 2
Button/fonts/font = null
Button/styles/disabled = null
Button/styles/focus = null
Button/styles/hover = null
Button/styles/normal = SubResource( 1 )
Button/styles/pressed = null

View File

@ -0,0 +1,6 @@
[gd_resource type="Theme" load_steps=2 format=2]
[ext_resource path="res://assets/liberation_serif_30pt.tres" type="DynamicFont" id=1]
[resource]
default_font = ExtResource( 1 )

View File

@ -0,0 +1,6 @@
[gd_resource type="Theme" load_steps=2 format=2]
[ext_resource path="res://assets/liberation_serif_40pt.tres" type="DynamicFont" id=1]
[resource]
default_font = ExtResource( 1 )

View File

@ -0,0 +1,66 @@
{
"Node_Boat0":{
"Id":"Boat_000",
"Action":"ShowText",
"A_Params":"",
"Text":"The game has begun! You may select from the options below. You are in a boat. You have been shipwrecked. You can leave the boat through a hatch.",
"Option_Labels":["Examine Ship","Climb out through hatch","Play the fiddle!","Rest","Meditate"],
"Option_GoTos":["Boat_002","Shore_001","Misc_001","Misc_002","Misc_003"]
},
"Node_Boat1":{
"Id":"Boat_001",
"Action":"ShowText",
"A_Params":"",
"Text":"The boat rocks gently. You can leave the boat through a hatch. There is also now a test option.",
"Option_Labels":["Examine Ship","Climb out through hatch","Play the fiddle!","Rest","Meditate", "Run die roll test"],
"Option_GoTos":["Boat_002","Shore_001","Misc_001","Misc_002","Misc_003","Test_000"]
},
"Node_Boat_002":{
"Id":"Boat_002",
"Action":"ShowText",
"A_Params":"",
"Text":"The boat is old and wrecked.",
"Option_Labels":["Continue"],
"Option_GoTos":["Boat_001"]
},
"Node_Shore_001":{
"Id":"Shore_001",
"Action":"ShowText",
"A_Params":"",
"Text":"You've reached the shore!",
"Option_Labels":["Return to boat"],
"Option_GoTos":["Boat_001"]
},
"Node_Misc_001":{
"Id":"Misc_001",
"Action":"ShowText",
"A_Params":"",
"Text":"You pull a fiddle from your sack and play it, while dancing around merrily. Great fun is had.",
"Option_Labels":["Resume your quest"],
"Option_GoTos":["Boat_001"]
},
"Node_Misc_002":{
"Id":"Misc_002",
"Action":"ShowText",
"A_Params":"",
"Text":"You pull out a blanket, settle your burdens and take a short rest.",
"Option_Labels":["Resume your quest"],
"Option_GoTos":["Boat_001"]
},
"Node_Misc_003":{
"Id":"Misc_003",
"Action":"ShowText",
"A_Params":"",
"Text":"You find a quiet corner on the boat, put down your burden, and feel the rocking of the boat. You rest mind and body, and really I'm experimenting with options and sizes of them, added via JSON here. So in your meditation you have a vision: a sparrow flies high over the mountains and reveals a castle! After this reverie, you awake.",
"Option_Labels":["Resume your quest"],
"Option_GoTos":["Boat_001"]
},
"Node_Test0":{
"Id":"Test_000",
"Action":"TestDieRollAction",
"A_Params":[4,6],
"Text":"NA",
"Option_Labels":["NA"],
"Option_GoTos":["Boat_001"]
},
}

View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<Node_Boat0>
<Id>Boat_000</Id>
<Action>ShowText</Action>
<A_Params></A_Params>
<Text>The game has begun! You may select from the options below. You are in a boat. You have been shipwrecked. You can leave the boat through a hatch.</Text>
<Option_Labels>Examine Ship</Option_Labels>
<Option_Labels>Climb out through hatch</Option_Labels>
<Option_Labels>Play the fiddle!</Option_Labels>
<Option_Labels>Rest</Option_Labels>
<Option_Labels>Meditate</Option_Labels>
<Option_GoTos>Boat_002</Option_GoTos>
<Option_GoTos>Shore_001</Option_GoTos>
<Option_GoTos>Misc_001</Option_GoTos>
<Option_GoTos>Misc_002</Option_GoTos>
<Option_GoTos>Misc_003</Option_GoTos>
</Node_Boat0>
<Node_Boat1>
<Id>Boat_001</Id>
<Action>ShowText</Action>
<A_Params></A_Params>
<Text>The boat rocks gently. You can leave the boat through a hatch. There is also now a test option.</Text>
<Option_Labels>Examine Ship</Option_Labels>
<Option_Labels>Climb out through hatch</Option_Labels>
<Option_Labels>Play the fiddle!</Option_Labels>
<Option_Labels>Rest</Option_Labels>
<Option_Labels>Meditate</Option_Labels>
<Option_Labels>Run die roll test</Option_Labels>
<Option_GoTos>Boat_002</Option_GoTos>
<Option_GoTos>Shore_001</Option_GoTos>
<Option_GoTos>Misc_001</Option_GoTos>
<Option_GoTos>Misc_002</Option_GoTos>
<Option_GoTos>Misc_003</Option_GoTos>
<Option_GoTos>Test_000</Option_GoTos>
</Node_Boat1>
<Node_Boat_002>
<Id>Boat_002</Id>
<Action>ShowText</Action>
<A_Params></A_Params>
<Text>The boat is old and wrecked.</Text>
<Option_Labels>Continue</Option_Labels>
<Option_GoTos>Boat_001</Option_GoTos>
</Node_Boat_002>
<Node_Shore_001>
<Id>Shore_001</Id>
<Action>ShowText</Action>
<A_Params></A_Params>
<Text>You&#x27;ve reached the shore!</Text>
<Option_Labels>Return to boat</Option_Labels>
<Option_GoTos>Boat_001</Option_GoTos>
</Node_Shore_001>
<Node_Misc_001>
<Id>Misc_001</Id>
<Action>ShowText</Action>
<A_Params></A_Params>
<Text>You pull a fiddle from your sack and play it, while dancing around merrily. Great fun is had.</Text>
<Option_Labels>Resume your quest</Option_Labels>
<Option_GoTos>Boat_001</Option_GoTos>
</Node_Misc_001>
<Node_Misc_002>
<Id>Misc_002</Id>
<Action>ShowText</Action>
<A_Params></A_Params>
<Text>You pull out a blanket, settle your burdens and take a short rest.</Text>
<Option_Labels>Resume your quest</Option_Labels>
<Option_GoTos>Boat_001</Option_GoTos>
</Node_Misc_002>
<Node_Misc_003>
<Id>Misc_003</Id>
<Action>ShowText</Action>
<A_Params></A_Params>
<Text>You find a quiet corner on the boat, put down your burden, and feel the rocking of the boat. You rest mind and body, and really I&#x27;m experimenting with options and sizes of them, added via JSON here. So in your meditation you have a vision: a sparrow flies high over the mountains and reveals a castle! After this reverie, you awake.</Text>
<Option_Labels>Resume your quest</Option_Labels>
<Option_GoTos>Boat_001</Option_GoTos>
</Node_Misc_003>
<Node_Test0>
<Id>Test_000</Id>
<Action>TestDieRollAction</Action>
<A_Params>4</A_Params>
<A_Params>6</A_Params>
<Text>NA</Text>
<Option_Labels>NA</Option_Labels>
<Option_GoTos>Boat_001</Option_GoTos>
</Node_Test0>
</root>

View File

@ -0,0 +1,23 @@
[player_preferences]
player_name="Tester the Wary!"
risk_threshold=2.0
[visual_controls]
font_size=3.0
brightness=5.0
[general_settings]
volume=0.0
closed_captions=false
dev_console=true
[virtual_keyboard]
keyboard_layout=2
[theme]
theme_selection=0

View File

@ -0,0 +1 @@
Testing the Tester
1 Testing the Tester

View File

@ -0,0 +1,13 @@
[remap]
importer="csv_translation"
type="Translation"
valid=false
[deps]
source_file="res://_userFiles/characterFiles/test.csv"
[params]
compress=true
delimiter=0

View File

@ -0,0 +1,10 @@
keys,en
Name,Thickly Goes
Profession,Brawler
Strength,Excessive
Intellect,Diminished
Willpower,Variable
Charm,Lacking
Weapon,Meaty Fists
Armor,Leather Jacket and Chaps
A Quote,You talkin to me?!
1 keys en
2 Name Thickly Goes
3 Profession Brawler
4 Strength Excessive
5 Intellect Diminished
6 Willpower Variable
7 Charm Lacking
8 Weapon Meaty Fists
9 Armor Leather Jacket and Chaps
10 A Quote You talkin to me?!

View File

@ -0,0 +1,16 @@
[remap]
importer="csv_translation"
type="Translation"
[deps]
files=[ "res://_userFiles/characterFiles/testingCSVCharFile.en.translation" ]
source_file="res://_userFiles/characterFiles/testingCSVCharFile.csv"
dest_files=[ "res://_userFiles/characterFiles/testingCSVCharFile.en.translation" ]
[params]
compress=true
delimiter=0

View File

@ -0,0 +1,200 @@
[gd_scene load_steps=6 format=2]
[ext_resource path="res://gamePlay/Game.gd" type="Script" id=1]
[ext_resource path="res://gamePlay/But_MoreOptions.gd" type="Script" id=2]
[ext_resource path="res://gamePlay/But_Option.tscn" type="PackedScene" id=3]
[ext_resource path="res://assets/liberation_serif_30pt.tres" type="DynamicFont" id=4]
[ext_resource path="res://assets/ui_controlNode_dark_theme.tres" type="Theme" id=5]
[node name="Game" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
theme = ExtResource( 5 )
script = ExtResource( 1 )
[node name="Background" type="PanelContainer" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
margin_right = -274.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="MarginContainer" type="MarginContainer" parent="Background"]
margin_left = 1.0
margin_top = 1.0
margin_right = 749.0
margin_bottom = 599.0
custom_constants/margin_right = 20
custom_constants/margin_top = 10
custom_constants/margin_left = 20
custom_constants/margin_bottom = 20
[node name="Rows" type="VBoxContainer" parent="Background/MarginContainer"]
margin_left = 20.0
margin_top = 10.0
margin_right = 728.0
margin_bottom = 578.0
custom_constants/separation = 10
[node name="ItemList" type="ItemList" parent="Background/MarginContainer/Rows"]
margin_right = 708.0
margin_bottom = 40.0
rect_min_size = Vector2( 0, 40 )
[node name="But_MoreOptions" type="Button" parent="Background/MarginContainer/Rows/ItemList"]
margin_right = 197.0
margin_bottom = 36.0
text = "More Options"
script = ExtResource( 2 )
__meta__ = {
"_edit_use_anchors_": false
}
next_scene_path = "res://Screens/MoreOptions.tscn"
[node name="GameInfo" type="PanelContainer" parent="Background/MarginContainer/Rows"]
margin_top = 50.0
margin_right = 708.0
margin_bottom = 438.0
size_flags_vertical = 3
[node name="CurrentText" type="VBoxContainer" parent="Background/MarginContainer/Rows/GameInfo"]
margin_left = 1.0
margin_top = 1.0
margin_right = 707.0
margin_bottom = 387.0
size_flags_horizontal = 3
size_flags_vertical = 3
custom_constants/separation = 20
[node name="InputArea" type="PanelContainer" parent="Background/MarginContainer/Rows"]
margin_top = 448.0
margin_right = 708.0
margin_bottom = 568.0
rect_min_size = Vector2( 0, 120 )
[node name="ScrollContainer" type="ScrollContainer" parent="Background/MarginContainer/Rows/InputArea"]
margin_left = 1.0
margin_top = 1.0
margin_right = 707.0
margin_bottom = 119.0
[node name="OptionsContainer" type="VBoxContainer" parent="Background/MarginContainer/Rows/InputArea/ScrollContainer"]
margin_right = 108.0
margin_bottom = 36.0
custom_constants/separation = 5
[node name="option1" type="Button" parent="Background/MarginContainer/Rows/InputArea/ScrollContainer/OptionsContainer" instance=ExtResource( 3 )]
margin_right = 108.0
margin_bottom = 36.0
custom_fonts/font = ExtResource( 4 )
text = "Option 1"
align = 0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Con_charSheet" type="PanelContainer" parent="."]
anchor_left = 1.0
anchor_right = 1.0
margin_left = -294.0
margin_bottom = 406.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="MarginContainer" type="MarginContainer" parent="Con_charSheet"]
margin_left = 1.0
margin_top = 1.0
margin_right = 293.0
margin_bottom = 405.0
[node name="VBoxContainer" type="VBoxContainer" parent="Con_charSheet/MarginContainer"]
margin_right = 292.0
margin_bottom = 404.0
[node name="IL_cs_label" type="ItemList" parent="Con_charSheet/MarginContainer/VBoxContainer"]
margin_right = 292.0
margin_bottom = 40.0
rect_min_size = Vector2( 0, 40 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Label" type="Label" parent="Con_charSheet/MarginContainer/VBoxContainer/IL_cs_label"]
anchor_left = 0.5
anchor_right = 0.5
margin_left = -141.0
margin_right = 141.0
margin_bottom = 43.0
text = "Character Sheet"
align = 1
valign = 1
__meta__ = {
"_edit_use_anchors_": false
}
[node name="CharacterSheet" type="TextEdit" parent="Con_charSheet/MarginContainer/VBoxContainer"]
margin_top = 44.0
margin_right = 292.0
margin_bottom = 404.0
size_flags_vertical = 3
readonly = true
wrap_enabled = true
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Con_chatScreen" type="PanelContainer" parent="."]
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = -292.0
margin_top = -196.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="VBoxContainer" type="VBoxContainer" parent="Con_chatScreen"]
margin_left = 1.0
margin_top = 1.0
margin_right = 291.0
margin_bottom = 195.0
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="IL_cs_label" type="ItemList" parent="Con_chatScreen/VBoxContainer"]
margin_right = 290.0
margin_bottom = 40.0
rect_min_size = Vector2( 0, 40 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Label" type="Label" parent="Con_chatScreen/VBoxContainer/IL_cs_label"]
anchor_left = 0.5
anchor_right = 0.5
margin_left = -142.0
margin_right = 142.0
margin_bottom = 43.0
text = "Chat"
align = 1
valign = 1
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ChatScreen" type="TextEdit" parent="Con_chatScreen/VBoxContainer"]
margin_top = 44.0
margin_right = 290.0
margin_bottom = 194.0
size_flags_vertical = 3
text = "Nothing yet
"
readonly = true
__meta__ = {
"_edit_use_anchors_": false
}
[connection signal="button_up" from="Background/MarginContainer/Rows/ItemList/But_MoreOptions" to="Background/MarginContainer/Rows/ItemList/But_MoreOptions" method="_on_But_MoreOptions_button_up"]

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Background_black.png-56039c85507f66e5b636dc3622fcd7f0.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/Backgrounds/Background_black.png"
dest_files=[ "res://.import/Background_black.png-56039c85507f66e5b636dc3622fcd7f0.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Background_white.png-90278c2837a8c1d366dff638eb6d5498.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/Backgrounds/Background_white.png"
dest_files=[ "res://.import/Background_white.png-90278c2837a8c1d366dff638eb6d5498.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/background_demo.png-e30ac367b3596013bad15f6d4bbea075.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/Backgrounds/background_demo.png"
dest_files=[ "res://.import/background_demo.png-e30ac367b3596013bad15f6d4bbea075.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

View File

@ -0,0 +1,7 @@
[gd_resource type="DynamicFont" load_steps=2 format=2]
[ext_resource path="res://assets/l_10646.ttf" type="DynamicFontData" id=1]
[resource]
size = 42
font_data = ExtResource( 1 )

View File

@ -0,0 +1,7 @@
[gd_resource type="DynamicFont" load_steps=2 format=2]
[ext_resource path="res://assets/l_10646.ttf" type="DynamicFontData" id=1]
[resource]
size = 24
font_data = ExtResource( 1 )

View File

@ -0,0 +1,6 @@
[gd_resource type="DynamicFont" load_steps=2 format=2]
[ext_resource path="res://assets/l_10646.ttf" type="DynamicFontData" id=1]
[resource]
font_data = ExtResource( 1 )

View File

@ -0,0 +1,6 @@
[gd_resource type="DynamicFont" load_steps=2 format=2]
[ext_resource path="res://assets/Fonts_source/LiberationSerif-Regular.ttf" type="DynamicFontData" id=1]
[resource]
font_data = ExtResource( 1 )

View File

@ -0,0 +1,7 @@
[gd_resource type="DynamicFont" load_steps=2 format=2]
[ext_resource path="res://assets/Fonts_source/LiberationSerif-Regular.ttf" type="DynamicFontData" id=1]
[resource]
size = 20
font_data = ExtResource( 1 )

View File

@ -0,0 +1,7 @@
[gd_resource type="DynamicFont" load_steps=2 format=2]
[ext_resource path="res://assets/Fonts_source/LiberationSerif-Regular.ttf" type="DynamicFontData" id=1]
[resource]
size = 30
font_data = ExtResource( 1 )

View File

@ -0,0 +1,7 @@
[gd_resource type="DynamicFont" load_steps=2 format=2]
[ext_resource path="res://assets/Fonts_source/LiberationSerif-Regular.ttf" type="DynamicFontData" id=1]
[resource]
size = 40
font_data = ExtResource( 1 )

View File

@ -0,0 +1,9 @@
[gd_resource type="StyleBoxFlat" format=2]
[resource]
bg_color = Color( 0, 0, 0, 1 )
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
border_color = Color( 0, 0, 0, 1 )

Some files were not shown because too many files have changed in this diff Show More