diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/.gdignore b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/.gdignore new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/.gdignore @@ -0,0 +1 @@ + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_black.png-56039c85507f66e5b636dc3622fcd7f0.md5 b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_black.png-56039c85507f66e5b636dc3622fcd7f0.md5 new file mode 100644 index 0000000..0bf079d --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_black.png-56039c85507f66e5b636dc3622fcd7f0.md5 @@ -0,0 +1,3 @@ +source_md5="79d2b9a5284e50d91a97c2dd565f2fa4" +dest_md5="ab01d4eeab6e15a95fc10ee1b4e02967" + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_black.png-56039c85507f66e5b636dc3622fcd7f0.stex b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_black.png-56039c85507f66e5b636dc3622fcd7f0.stex new file mode 100644 index 0000000..6865b26 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_black.png-56039c85507f66e5b636dc3622fcd7f0.stex differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_black.png-5f076dc51f49c2d5a7007d49260388b4.md5 b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_black.png-5f076dc51f49c2d5a7007d49260388b4.md5 new file mode 100644 index 0000000..0bf079d --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_black.png-5f076dc51f49c2d5a7007d49260388b4.md5 @@ -0,0 +1,3 @@ +source_md5="79d2b9a5284e50d91a97c2dd565f2fa4" +dest_md5="ab01d4eeab6e15a95fc10ee1b4e02967" + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_black.png-5f076dc51f49c2d5a7007d49260388b4.stex b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_black.png-5f076dc51f49c2d5a7007d49260388b4.stex new file mode 100644 index 0000000..6865b26 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_black.png-5f076dc51f49c2d5a7007d49260388b4.stex differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_white.png-092c9ce605239bda8605597c05979c3a.md5 b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_white.png-092c9ce605239bda8605597c05979c3a.md5 new file mode 100644 index 0000000..1b48e5f --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_white.png-092c9ce605239bda8605597c05979c3a.md5 @@ -0,0 +1,3 @@ +source_md5="13a1e728def8fb06bd8e797fcc392604" +dest_md5="b396169339b2e8d769e9830c387050ad" + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_white.png-092c9ce605239bda8605597c05979c3a.stex b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_white.png-092c9ce605239bda8605597c05979c3a.stex new file mode 100644 index 0000000..f33586d Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_white.png-092c9ce605239bda8605597c05979c3a.stex differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_white.png-90278c2837a8c1d366dff638eb6d5498.md5 b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_white.png-90278c2837a8c1d366dff638eb6d5498.md5 new file mode 100644 index 0000000..1b48e5f --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_white.png-90278c2837a8c1d366dff638eb6d5498.md5 @@ -0,0 +1,3 @@ +source_md5="13a1e728def8fb06bd8e797fcc392604" +dest_md5="b396169339b2e8d769e9830c387050ad" + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_white.png-90278c2837a8c1d366dff638eb6d5498.stex b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_white.png-90278c2837a8c1d366dff638eb6d5498.stex new file mode 100644 index 0000000..f33586d Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/Background_white.png-90278c2837a8c1d366dff638eb6d5498.stex differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/background_demo.png-bf78baa5e40d24f1836aa08964398dec.md5 b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/background_demo.png-bf78baa5e40d24f1836aa08964398dec.md5 new file mode 100644 index 0000000..5719088 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/background_demo.png-bf78baa5e40d24f1836aa08964398dec.md5 @@ -0,0 +1,3 @@ +source_md5="266f789a4e895911161321092c2c2429" +dest_md5="a08a6dcf169f683724bfd5cd82e23fe6" + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/background_demo.png-bf78baa5e40d24f1836aa08964398dec.stex b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/background_demo.png-bf78baa5e40d24f1836aa08964398dec.stex new file mode 100644 index 0000000..fffc668 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/background_demo.png-bf78baa5e40d24f1836aa08964398dec.stex differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/background_demo.png-e30ac367b3596013bad15f6d4bbea075.md5 b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/background_demo.png-e30ac367b3596013bad15f6d4bbea075.md5 new file mode 100644 index 0000000..5719088 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/background_demo.png-e30ac367b3596013bad15f6d4bbea075.md5 @@ -0,0 +1,3 @@ +source_md5="266f789a4e895911161321092c2c2429" +dest_md5="a08a6dcf169f683724bfd5cd82e23fe6" + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/background_demo.png-e30ac367b3596013bad15f6d4bbea075.stex b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/background_demo.png-e30ac367b3596013bad15f6d4bbea075.stex new file mode 100644 index 0000000..fffc668 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/background_demo.png-e30ac367b3596013bad15f6d4bbea075.stex differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 new file mode 100644 index 0000000..7b61c3e --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 @@ -0,0 +1,3 @@ +source_md5="47313fa4c47a9963fddd764e1ec6e4a8" +dest_md5="2ded9e7f9060e2b530aab678b135fc5b" + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex new file mode 100644 index 0000000..3ca6461 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/test.csv-75a2900a9caab1d59b154f8c32b55ac9.md5 b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/test.csv-75a2900a9caab1d59b154f8c32b55ac9.md5 new file mode 100644 index 0000000..7ee81f9 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/test.csv-75a2900a9caab1d59b154f8c32b55ac9.md5 @@ -0,0 +1 @@ +source_md5="cfb2a27b25dace2544a35a8ec7d50081" diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/testingCSVCharFile.csv-3b5525eef03e325be0c14b7381c8663a.md5 b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/testingCSVCharFile.csv-3b5525eef03e325be0c14b7381c8663a.md5 new file mode 100644 index 0000000..3ea4a2a --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/testingCSVCharFile.csv-3b5525eef03e325be0c14b7381c8663a.md5 @@ -0,0 +1,3 @@ +source_md5="3b37741efaad37471d3be79926341120" +dest_md5="f4ff30e73b46c5029908e5376b2e69b5" + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/testingCSVCharFile.csv-f593f5b4d0df687ec2043eb45dbff294.md5 b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/testingCSVCharFile.csv-f593f5b4d0df687ec2043eb45dbff294.md5 new file mode 100644 index 0000000..a569579 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/.import/testingCSVCharFile.csv-f593f5b4d0df687ec2043eb45dbff294.md5 @@ -0,0 +1 @@ +source_md5="fe8dea03f3f241ec8c3f199dcd974cbe" diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Control.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Control.tscn new file mode 100644 index 0000000..bd41ee5 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Control.tscn @@ -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 +} diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/README.txt b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/README.txt new file mode 100644 index 0000000..58a8674 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/README.txt @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/But_HistoryPager.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/But_HistoryPager.gd new file mode 100644 index 0000000..a5e1b2f --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/But_HistoryPager.gd @@ -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() + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/But_StartNewGame.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/But_StartNewGame.gd new file mode 100644 index 0000000..d402870 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/But_StartNewGame.gd @@ -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 "" + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Character_Add.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Character_Add.gd new file mode 100644 index 0000000..dd12d54 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Character_Add.gd @@ -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 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Character_Add.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Character_Add.tscn new file mode 100644 index 0000000..631565a --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Character_Add.tscn @@ -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"] diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Character_Load.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Character_Load.gd new file mode 100644 index 0000000..ad6681d --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Character_Load.gd @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Character_Load.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Character_Load.tscn new file mode 100644 index 0000000..5550459 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Character_Load.tscn @@ -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"] diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/HistoryViewer.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/HistoryViewer.gd new file mode 100644 index 0000000..843b361 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/HistoryViewer.gd @@ -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) + + + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/HistoryViewer.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/HistoryViewer.tscn new file mode 100644 index 0000000..0c22f55 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/HistoryViewer.tscn @@ -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"] diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/ImportCharacter.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/ImportCharacter.gd new file mode 100644 index 0000000..3a17978 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/ImportCharacter.gd @@ -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() diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/ImportCharacter.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/ImportCharacter.tscn new file mode 100644 index 0000000..f0d9b1c --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/ImportCharacter.tscn @@ -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"] diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/LoadGame_temp.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/LoadGame_temp.tscn new file mode 100644 index 0000000..58415ca --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/LoadGame_temp.tscn @@ -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" diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/MenuScreen.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/MenuScreen.gd new file mode 100644 index 0000000..42aa2e9 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/MenuScreen.gd @@ -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() diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/MenuScreen.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/MenuScreen.tscn new file mode 100644 index 0000000..315d8dc --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/MenuScreen.tscn @@ -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)" diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/MoreOptions.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/MoreOptions.gd new file mode 100644 index 0000000..95f1032 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/MoreOptions.gd @@ -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() diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/MoreOptions.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/MoreOptions.tscn new file mode 100644 index 0000000..e1494ce --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/MoreOptions.tscn @@ -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"] diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Multiplayer_temp.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Multiplayer_temp.tscn new file mode 100644 index 0000000..58415ca --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Multiplayer_temp.tscn @@ -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" diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/NewGame_temp.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/NewGame_temp.tscn new file mode 100644 index 0000000..58415ca --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/NewGame_temp.tscn @@ -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" diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/PlayerSelection.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/PlayerSelection.gd new file mode 100644 index 0000000..6aa9b23 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/PlayerSelection.gd @@ -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() diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/PlayerSelection.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/PlayerSelection.tscn new file mode 100644 index 0000000..fa1e992 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/PlayerSelection.tscn @@ -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 +} diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/SettingsMenuConfig.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/SettingsMenuConfig.gd new file mode 100644 index 0000000..e8be7aa --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/SettingsMenuConfig.gd @@ -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) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/SettingsMenuControl.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/SettingsMenuControl.tscn new file mode 100644 index 0000000..0385209 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/SettingsMenuControl.tscn @@ -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"] diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Temp_Button.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Temp_Button.gd new file mode 100644 index 0000000..d5fbca5 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/Temp_Button.gd @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/grabFocus.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/grabFocus.gd new file mode 100644 index 0000000..f3dcd9e --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/Screens/grabFocus.gd @@ -0,0 +1,7 @@ +extends Control + +#GRAB FOCUS: simple script for temp files to grab focus + + +func _ready() -> void: + $Title/But_ChangeScene.grab_focus() diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_ChangeScene.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_ChangeScene.gd new file mode 100644 index 0000000..44ce65f --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_ChangeScene.gd @@ -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 "" + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_ChangeScene.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_ChangeScene.tscn new file mode 100644 index 0000000..80849fc --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_ChangeScene.tscn @@ -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"] diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_History.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_History.gd new file mode 100644 index 0000000..6406e14 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_History.gd @@ -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 + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_History_Page.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_History_Page.gd new file mode 100644 index 0000000..f63f1e3 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_History_Page.gd @@ -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]) + + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_PlayButton.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_PlayButton.gd new file mode 100644 index 0000000..c6362cf --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_PlayButton.gd @@ -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 "" + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_Quit.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_Quit.gd new file mode 100644 index 0000000..dc65d05 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_Quit.gd @@ -0,0 +1,41 @@ +#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() + #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())) + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_Quit.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_Quit.tscn new file mode 100644 index 0000000..e52c053 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_Quit.tscn @@ -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"] diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_ResumeGame.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_ResumeGame.gd new file mode 100644 index 0000000..ee37c4f --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_ResumeGame.gd @@ -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) + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_SaveSettings.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_SaveSettings.gd new file mode 100644 index 0000000..0b09f53 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/But_SaveSettings.gd @@ -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() + + + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/InputResponse.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/InputResponse.gd new file mode 100644 index 0000000..87f2395 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/InputResponse.gd @@ -0,0 +1,5 @@ +extends VBoxContainer + +func set_text(input: String, response: String): + $InputHistory.text = input + $Response.text = response diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/InputResponse.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/InputResponse.tscn new file mode 100644 index 0000000..8449256 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/InputResponse.tscn @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Locale.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Locale.gd new file mode 100644 index 0000000..f034b3a --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Locale.gd @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Locale.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Locale.tscn new file mode 100644 index 0000000..1b6d976 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Locale.tscn @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Option.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Option.gd new file mode 100644 index 0000000..1de5518 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Option.gd @@ -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) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Option.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Option.tscn new file mode 100644 index 0000000..cc658d0 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Option.tscn @@ -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"] diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Response.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Response.tscn new file mode 100644 index 0000000..3891ae3 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Response.tscn @@ -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 +} diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Title.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Title.tscn new file mode 100644 index 0000000..dc37d75 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/UserInterface/Title.tscn @@ -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 +} diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/CommandProcessor.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/CommandProcessor.gd new file mode 100644 index 0000000..3804dfd --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/CommandProcessor.gd @@ -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; diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/LocaleManager.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/LocaleManager.gd new file mode 100644 index 0000000..e0ba69c --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/LocaleManager.gd @@ -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) + + + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/characterFiles/demoCharacter_Bruno.txt b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/characterFiles/demoCharacter_Bruno.txt new file mode 100644 index 0000000..5bde792 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/characterFiles/demoCharacter_Bruno.txt @@ -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. \ No newline at end of file diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_controlNode_dark_theme.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_controlNode_dark_theme.tres new file mode 100644 index 0000000..b606d40 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_controlNode_dark_theme.tres @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_gameplay_big_theme.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_gameplay_big_theme.tres new file mode 100644 index 0000000..e0452b5 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_gameplay_big_theme.tres @@ -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 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_gameplay_theme.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_gameplay_theme.tres new file mode 100644 index 0000000..e0452b5 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_gameplay_theme.tres @@ -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 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_highContrast_but_theme.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_highContrast_but_theme.tres new file mode 100644 index 0000000..36b0309 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_highContrast_but_theme.tres @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_light_but_theme.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_light_but_theme.tres new file mode 100644 index 0000000..c3164c2 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_light_but_theme.tres @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_theme.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_theme.tres new file mode 100644 index 0000000..b388b3e --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_theme.tres @@ -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 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_title_theme.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_title_theme.tres new file mode 100644 index 0000000..a2584dc --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_toArchive/ui_title_theme.tres @@ -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 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/Module_Demo_001.json b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/Module_Demo_001.json new file mode 100644 index 0000000..467f3de --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/Module_Demo_001.json @@ -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"] + }, +} \ No newline at end of file diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/PlayerPreferences.cfg b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/PlayerPreferences.cfg new file mode 100644 index 0000000..baf2a6a --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/PlayerPreferences.cfg @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/test.csv b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/test.csv new file mode 100644 index 0000000..6d4ca27 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/test.csv @@ -0,0 +1 @@ +Testing the Tester \ No newline at end of file diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/test.csv.import b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/test.csv.import new file mode 100644 index 0000000..5abc861 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/test.csv.import @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/testingCSVCharFile.csv b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/testingCSVCharFile.csv new file mode 100644 index 0000000..80bc4f9 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/testingCSVCharFile.csv @@ -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?! \ No newline at end of file diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/testingCSVCharFile.csv.import b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/testingCSVCharFile.csv.import new file mode 100644 index 0000000..fd2dad1 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/testingCSVCharFile.csv.import @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/testingCSVCharFile.en.translation b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/testingCSVCharFile.en.translation new file mode 100644 index 0000000..bae5b16 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/characterFiles/testingCSVCharFile.en.translation differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/game_01.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/game_01.tscn new file mode 100644 index 0000000..32131cf --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/_userFiles/game_01.tscn @@ -0,0 +1,200 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://gamePlay/But_MoreOptions.gd" type="Script" id=1] +[ext_resource path="res://gamePlay/Game.gd" type="Script" id=2] +[ext_resource path="res://gamePlay/But_Option.tscn" type="PackedScene" id=3] +[ext_resource path="res://assets/ui_controlNode_dark_theme.tres" type="Theme" id=4] +[ext_resource path="res://assets/liberation_serif_30pt.tres" type="DynamicFont" id=5] + +[node name="Game" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 4 ) +script = ExtResource( 2 ) + +[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( 1 ) +__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( 5 ) +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"] diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/Background_black.png b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/Background_black.png new file mode 100644 index 0000000..85723f8 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/Background_black.png differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/Background_black.png.import b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/Background_black.png.import new file mode 100644 index 0000000..a17e765 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/Background_black.png.import @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/Background_white.png b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/Background_white.png new file mode 100644 index 0000000..62c3a55 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/Background_white.png differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/Background_white.png.import b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/Background_white.png.import new file mode 100644 index 0000000..dae0aeb --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/Background_white.png.import @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/background_demo.png b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/background_demo.png new file mode 100644 index 0000000..1ac5ed2 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/background_demo.png differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/background_demo.png.import b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/background_demo.png.import new file mode 100644 index 0000000..1e355e9 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Backgrounds/background_demo.png.import @@ -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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/LiberationSerif-Bold.ttf b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/LiberationSerif-Bold.ttf new file mode 100644 index 0000000..db3d6f3 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/LiberationSerif-Bold.ttf differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/LiberationSerif-BoldItalic.ttf b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/LiberationSerif-BoldItalic.ttf new file mode 100644 index 0000000..8b21277 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/LiberationSerif-BoldItalic.ttf differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/LiberationSerif-Italic.ttf b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/LiberationSerif-Italic.ttf new file mode 100644 index 0000000..768b833 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/LiberationSerif-Italic.ttf differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/LiberationSerif-Regular.ttf b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/LiberationSerif-Regular.ttf new file mode 100644 index 0000000..6fa9a59 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/LiberationSerif-Regular.ttf differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/l_10646.ttf b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/l_10646.ttf new file mode 100644 index 0000000..afb1c60 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/Fonts_source/l_10646.ttf differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/base_dynamicFont_BIG.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/base_dynamicFont_BIG.tres new file mode 100644 index 0000000..a2e2de7 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/base_dynamicFont_BIG.tres @@ -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 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/base_dynamicfont.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/base_dynamicfont.tres new file mode 100644 index 0000000..63243b4 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/base_dynamicfont.tres @@ -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 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/base_dynamicfont_16.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/base_dynamicfont_16.tres new file mode 100644 index 0000000..f9acb20 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/base_dynamicfont_16.tres @@ -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 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/l_10646.ttf b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/l_10646.ttf new file mode 100644 index 0000000..afb1c60 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/l_10646.ttf differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/liberation_serif.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/liberation_serif.tres new file mode 100644 index 0000000..051bc09 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/liberation_serif.tres @@ -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 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/liberation_serif_20pt.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/liberation_serif_20pt.tres new file mode 100644 index 0000000..2953618 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/liberation_serif_20pt.tres @@ -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 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/liberation_serif_30pt.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/liberation_serif_30pt.tres new file mode 100644 index 0000000..6297862 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/liberation_serif_30pt.tres @@ -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 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/liberation_serif_40pt.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/liberation_serif_40pt.tres new file mode 100644 index 0000000..229621e --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/liberation_serif_40pt.tres @@ -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 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/sbf_black.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/sbf_black.tres new file mode 100644 index 0000000..859abe4 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/sbf_black.tres @@ -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 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/sbf_white.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/sbf_white.tres new file mode 100644 index 0000000..418e195 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/sbf_white.tres @@ -0,0 +1,9 @@ +[gd_resource type="StyleBoxFlat" format=2] + +[resource] +bg_color = Color( 1, 1, 1, 1 ) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color( 1, 1, 1, 1 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/ui_controlNode_dark_theme.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/ui_controlNode_dark_theme.tres new file mode 100644 index 0000000..38a6ae1 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/ui_controlNode_dark_theme.tres @@ -0,0 +1,120 @@ +[gd_resource type="Theme" load_steps=5 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] +[ext_resource path="res://assets/liberation_serif_20pt.tres" type="DynamicFont" id=3] +[ext_resource path="res://assets/liberation_serif.tres" type="DynamicFont" id=4] + +[resource] +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 = ExtResource( 2 ) +Button/styles/disabled = null +Button/styles/focus = null +Button/styles/hover = null +Button/styles/normal = ExtResource( 1 ) +Button/styles/pressed = ExtResource( 1 ) +ItemList/colors/font_color = Color( 1, 1, 1, 1 ) +ItemList/colors/font_color_selected = Color( 1, 1, 1, 1 ) +ItemList/colors/guide_color = Color( 0, 0, 0, 0.1 ) +ItemList/constants/hseparation = 4 +ItemList/constants/icon_margin = 4 +ItemList/constants/line_separation = 2 +ItemList/constants/vseparation = 2 +ItemList/fonts/font = ExtResource( 3 ) +ItemList/styles/bg = ExtResource( 1 ) +ItemList/styles/bg_focus = ExtResource( 1 ) +ItemList/styles/cursor = null +ItemList/styles/cursor_unfocused = ExtResource( 1 ) +ItemList/styles/selected = null +ItemList/styles/selected_focus = 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 = ExtResource( 3 ) +Label/styles/normal = ExtResource( 1 ) +LineEdit/colors/clear_button_color = Color( 0.88, 0.88, 0.88, 1 ) +LineEdit/colors/clear_button_color_pressed = Color( 1, 1, 1, 1 ) +LineEdit/colors/cursor_color = Color( 0.94, 0.94, 0.94, 1 ) +LineEdit/colors/font_color = Color( 1, 1, 1, 1 ) +LineEdit/colors/font_color_selected = Color( 1, 1, 1, 1 ) +LineEdit/colors/font_color_uneditable = Color( 0.88, 0.88, 0.88, 0.5 ) +LineEdit/colors/selection_color = Color( 0.49, 0.49, 0.49, 1 ) +LineEdit/constants/minimum_spaces = 12 +LineEdit/fonts/font = null +LineEdit/icons/clear = null +LineEdit/styles/focus = null +LineEdit/styles/normal = ExtResource( 1 ) +LineEdit/styles/read_only = null +MarginContainer/constants/margin_bottom = 0 +MarginContainer/constants/margin_left = 0 +MarginContainer/constants/margin_right = 0 +MarginContainer/constants/margin_top = 0 +Panel/styles/panel = ExtResource( 1 ) +PanelContainer/styles/panel = ExtResource( 1 ) +Tabs/colors/font_color_bg = Color( 1, 1, 1, 1 ) +Tabs/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) +Tabs/colors/font_color_fg = Color( 1, 1, 1, 1 ) +Tabs/constants/hseparation = 4 +Tabs/constants/label_valign_bg = 2 +Tabs/constants/label_valign_fg = 0 +Tabs/constants/top_margin = 24 +Tabs/fonts/font = ExtResource( 3 ) +Tabs/icons/close = null +Tabs/icons/decrement = null +Tabs/icons/decrement_highlight = null +Tabs/icons/increment = null +Tabs/icons/increment_highlight = null +Tabs/styles/button = ExtResource( 1 ) +Tabs/styles/button_pressed = null +Tabs/styles/panel = ExtResource( 1 ) +Tabs/styles/tab_bg = ExtResource( 1 ) +Tabs/styles/tab_disabled = null +Tabs/styles/tab_fg = ExtResource( 1 ) +TextEdit/colors/background_color = Color( 1, 1, 1, 1 ) +TextEdit/colors/bookmark_color = Color( 0.08, 0.49, 0.98, 1 ) +TextEdit/colors/brace_mismatch_color = Color( 1, 0.2, 0.2, 1 ) +TextEdit/colors/breakpoint_color = Color( 0.8, 0.8, 0.4, 0.2 ) +TextEdit/colors/caret_background_color = Color( 0, 0, 0, 1 ) +TextEdit/colors/caret_color = Color( 0.88, 0.88, 0.88, 1 ) +TextEdit/colors/code_folding_color = Color( 0.8, 0.8, 0.8, 0.8 ) +TextEdit/colors/completion_background_color = Color( 0.17, 0.16, 0.2, 1 ) +TextEdit/colors/completion_existing_color = Color( 0.87, 0.87, 0.87, 0.13 ) +TextEdit/colors/completion_font_color = Color( 0.67, 0.67, 0.67, 1 ) +TextEdit/colors/completion_scroll_color = Color( 1, 1, 1, 1 ) +TextEdit/colors/completion_selected_color = Color( 0.26, 0.26, 0.27, 1 ) +TextEdit/colors/current_line_color = Color( 0.25, 0.25, 0.26, 0.8 ) +TextEdit/colors/executing_line_color = Color( 0.2, 0.8, 0.2, 0.4 ) +TextEdit/colors/font_color = Color( 1, 1, 1, 1 ) +TextEdit/colors/font_color_readonly = Color( 0.933333, 0.933333, 0.933333, 0.501961 ) +TextEdit/colors/font_color_selected = Color( 1, 1, 1, 1 ) +TextEdit/colors/function_color = Color( 0.4, 0.64, 0.81, 1 ) +TextEdit/colors/line_number_color = Color( 0.67, 0.67, 0.67, 0.4 ) +TextEdit/colors/mark_color = Color( 1, 0.4, 0.4, 0.4 ) +TextEdit/colors/member_variable_color = Color( 0.9, 0.31, 0.35, 1 ) +TextEdit/colors/number_color = Color( 0.92, 0.58, 0.2, 1 ) +TextEdit/colors/safe_line_number_color = Color( 0.67, 0.78, 0.67, 0.6 ) +TextEdit/colors/selection_color = Color( 0.49, 0.49, 0.49, 1 ) +TextEdit/colors/symbol_color = Color( 0.94, 0.94, 0.94, 1 ) +TextEdit/colors/word_highlighted_color = Color( 0.8, 0.9, 0.9, 0.15 ) +TextEdit/constants/completion_lines = 7 +TextEdit/constants/completion_max_width = 50 +TextEdit/constants/completion_scroll_width = 3 +TextEdit/constants/line_spacing = 4 +TextEdit/fonts/font = ExtResource( 4 ) +TextEdit/icons/fold = null +TextEdit/icons/folded = null +TextEdit/icons/space = null +TextEdit/icons/tab = null +TextEdit/styles/completion = ExtResource( 1 ) +TextEdit/styles/focus = ExtResource( 1 ) +TextEdit/styles/normal = ExtResource( 1 ) +TextEdit/styles/read_only = ExtResource( 1 ) +VBoxContainer/constants/separation = 4 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/ui_controlNode_light_theme.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/ui_controlNode_light_theme.tres new file mode 100644 index 0000000..7fcfd40 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/assets/ui_controlNode_light_theme.tres @@ -0,0 +1,120 @@ +[gd_resource type="Theme" load_steps=5 format=2] + +[ext_resource path="res://assets/sbf_white.tres" type="StyleBox" id=1] +[ext_resource path="res://assets/liberation_serif_30pt.tres" type="DynamicFont" id=2] +[ext_resource path="res://assets/liberation_serif_20pt.tres" type="DynamicFont" id=3] +[ext_resource path="res://assets/liberation_serif.tres" type="DynamicFont" id=4] + +[resource] +Button/colors/font_color = Color( 0, 0, 0, 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 = ExtResource( 1 ) +ItemList/colors/font_color = Color( 0, 0, 0, 1 ) +ItemList/colors/font_color_selected = Color( 1, 1, 1, 1 ) +ItemList/colors/guide_color = Color( 0, 0, 0, 0.1 ) +ItemList/constants/hseparation = 4 +ItemList/constants/icon_margin = 4 +ItemList/constants/line_separation = 2 +ItemList/constants/vseparation = 2 +ItemList/fonts/font = null +ItemList/styles/bg = ExtResource( 1 ) +ItemList/styles/bg_focus = ExtResource( 1 ) +ItemList/styles/cursor = null +ItemList/styles/cursor_unfocused = ExtResource( 1 ) +ItemList/styles/selected = null +ItemList/styles/selected_focus = null +Label/colors/font_color = Color( 0, 0, 0, 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 = ExtResource( 3 ) +Label/styles/normal = ExtResource( 1 ) +LineEdit/colors/clear_button_color = Color( 0.88, 0.88, 0.88, 1 ) +LineEdit/colors/clear_button_color_pressed = Color( 1, 1, 1, 1 ) +LineEdit/colors/cursor_color = Color( 0.94, 0.94, 0.94, 1 ) +LineEdit/colors/font_color = Color( 0, 0, 0, 1 ) +LineEdit/colors/font_color_selected = Color( 0, 0, 0, 1 ) +LineEdit/colors/font_color_uneditable = Color( 0.88, 0.88, 0.88, 0.5 ) +LineEdit/colors/selection_color = Color( 0.49, 0.49, 0.49, 1 ) +LineEdit/constants/minimum_spaces = 12 +LineEdit/fonts/font = null +LineEdit/icons/clear = null +LineEdit/styles/focus = null +LineEdit/styles/normal = ExtResource( 1 ) +LineEdit/styles/read_only = null +MarginContainer/constants/margin_bottom = 0 +MarginContainer/constants/margin_left = 0 +MarginContainer/constants/margin_right = 0 +MarginContainer/constants/margin_top = 0 +Panel/styles/panel = ExtResource( 1 ) +PanelContainer/styles/panel = ExtResource( 1 ) +Tabs/colors/font_color_bg = Color( 0, 0, 0, 1 ) +Tabs/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) +Tabs/colors/font_color_fg = Color( 0, 0, 0, 1 ) +Tabs/constants/hseparation = 4 +Tabs/constants/label_valign_bg = 2 +Tabs/constants/label_valign_fg = 0 +Tabs/constants/top_margin = 24 +Tabs/fonts/font = ExtResource( 3 ) +Tabs/icons/close = null +Tabs/icons/decrement = null +Tabs/icons/decrement_highlight = null +Tabs/icons/increment = null +Tabs/icons/increment_highlight = null +Tabs/styles/button = ExtResource( 1 ) +Tabs/styles/button_pressed = null +Tabs/styles/panel = ExtResource( 1 ) +Tabs/styles/tab_bg = ExtResource( 1 ) +Tabs/styles/tab_disabled = null +Tabs/styles/tab_fg = ExtResource( 1 ) +TextEdit/colors/background_color = Color( 1, 1, 1, 1 ) +TextEdit/colors/bookmark_color = Color( 0.08, 0.49, 0.98, 1 ) +TextEdit/colors/brace_mismatch_color = Color( 1, 0.2, 0.2, 1 ) +TextEdit/colors/breakpoint_color = Color( 0.8, 0.8, 0.4, 0.2 ) +TextEdit/colors/caret_background_color = Color( 0, 0, 0, 1 ) +TextEdit/colors/caret_color = Color( 0.88, 0.88, 0.88, 1 ) +TextEdit/colors/code_folding_color = Color( 0.8, 0.8, 0.8, 0.8 ) +TextEdit/colors/completion_background_color = Color( 0.17, 0.16, 0.2, 1 ) +TextEdit/colors/completion_existing_color = Color( 0.87, 0.87, 0.87, 0.13 ) +TextEdit/colors/completion_font_color = Color( 0.67, 0.67, 0.67, 1 ) +TextEdit/colors/completion_scroll_color = Color( 1, 1, 1, 1 ) +TextEdit/colors/completion_selected_color = Color( 0.26, 0.26, 0.27, 1 ) +TextEdit/colors/current_line_color = Color( 0.25, 0.25, 0.26, 0.8 ) +TextEdit/colors/executing_line_color = Color( 0.2, 0.8, 0.2, 0.4 ) +TextEdit/colors/font_color = Color( 0.00392157, 0.00392157, 0.00392157, 1 ) +TextEdit/colors/font_color_readonly = Color( 0.0588235, 0.0588235, 0.0588235, 0.501961 ) +TextEdit/colors/font_color_selected = Color( 0, 0, 0, 1 ) +TextEdit/colors/function_color = Color( 0.4, 0.64, 0.81, 1 ) +TextEdit/colors/line_number_color = Color( 0.67, 0.67, 0.67, 0.4 ) +TextEdit/colors/mark_color = Color( 1, 0.4, 0.4, 0.4 ) +TextEdit/colors/member_variable_color = Color( 0.9, 0.31, 0.35, 1 ) +TextEdit/colors/number_color = Color( 0.92, 0.58, 0.2, 1 ) +TextEdit/colors/safe_line_number_color = Color( 0.67, 0.78, 0.67, 0.6 ) +TextEdit/colors/selection_color = Color( 0.49, 0.49, 0.49, 1 ) +TextEdit/colors/symbol_color = Color( 0.94, 0.94, 0.94, 1 ) +TextEdit/colors/word_highlighted_color = Color( 0.8, 0.9, 0.9, 0.15 ) +TextEdit/constants/completion_lines = 7 +TextEdit/constants/completion_max_width = 50 +TextEdit/constants/completion_scroll_width = 3 +TextEdit/constants/line_spacing = 4 +TextEdit/fonts/font = ExtResource( 4 ) +TextEdit/icons/fold = null +TextEdit/icons/folded = null +TextEdit/icons/space = null +TextEdit/icons/tab = null +TextEdit/styles/completion = ExtResource( 1 ) +TextEdit/styles/focus = ExtResource( 1 ) +TextEdit/styles/normal = ExtResource( 1 ) +TextEdit/styles/read_only = ExtResource( 1 ) +VBoxContainer/constants/separation = 4 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/default_env.tres b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/default_env.tres new file mode 100644 index 0000000..20207a4 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/export_presets.cfg b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/export_presets.cfg new file mode 100644 index 0000000..8fc3776 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/export_presets.cfg @@ -0,0 +1,34 @@ +[preset.0] + +name="HTML5" +platform="HTML5" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="*.json, *.csv, *.cfg" +exclude_filter="" +export_path="../../Godot_Outputs/Godot_35_Outputs/Web/Web_Demo_Game_Base_2023_0806/index.html" +script_export_mode=1 +script_encryption_key="" + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +variant/export_type=0 +vram_texture_compression/for_desktop=true +vram_texture_compression/for_mobile=false +html/export_icon=true +html/custom_html_shell="" +html/head_include="" +html/canvas_resize_policy=2 +html/focus_canvas_on_start=true +html/experimental_virtual_keyboard=false +progressive_web_app/enabled=false +progressive_web_app/offline_page="" +progressive_web_app/display=1 +progressive_web_app/orientation=0 +progressive_web_app/icon_144x144="" +progressive_web_app/icon_180x180="" +progressive_web_app/icon_512x512="" +progressive_web_app/background_color=Color( 0, 0, 0, 1 ) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/But_History.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/But_History.gd new file mode 100644 index 0000000..6406e14 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/But_History.gd @@ -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 + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/But_History_Page.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/But_History_Page.gd new file mode 100644 index 0000000..f63f1e3 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/But_History_Page.gd @@ -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]) + + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/But_MoreOptions.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/But_MoreOptions.gd new file mode 100644 index 0000000..227136c --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/But_MoreOptions.gd @@ -0,0 +1,25 @@ +#But_MoreOptions: +# For these options, we leave the game object active and manually add and remove +# the scenes as needed. + +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_MoreOptions_button_up(): + var root = get_node("/root") + var gameCurrent = get_node("/root/Game") + var gameSingleton = get_node("/root/GameCurrent") + var nextScene = load(next_scene_path) + + gameSingleton.gameCurrent_scene = gameCurrent + root.remove_child(gameCurrent) + nextScene = nextScene.instance() + root.add_child(nextScene) + + +func _get_configuration_warning() -> String: + return "next_scene_path must be set for this button to work" if next_scene_path == "" else "" + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/But_Option.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/But_Option.tscn new file mode 100644 index 0000000..50ddaa7 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/But_Option.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://assets/liberation_serif_30pt.tres" type="DynamicFont" id=1] + +[node name="option1" type="Button"] +margin_right = 706.0 +margin_bottom = 36.0 +custom_fonts/font = ExtResource( 1 ) +text = "Option 1" +align = 0 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/CommandProcessor.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/CommandProcessor.gd new file mode 100644 index 0000000..3804dfd --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/CommandProcessor.gd @@ -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; diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/Game.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/Game.gd new file mode 100644 index 0000000..c4fd4f0 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/Game.gd @@ -0,0 +1,192 @@ +#GAME: +# Controls output space, loading descriptions and options for each locale and +# appending to the history array. + +extends Control + +#Source for module file: to the GU +#export(String, FILE, "*.json") var module_file_path:String +#DKM TEMP: +var module_file_path = "res://_userFiles/Module_Demo_001.json" + +onready var history_source = get_node("/root/History").historyScreensSingleton +onready var settings = get_node("/root/GlobalSaveInstance").settingsInstance + +#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") +const OptionOutput = preload("res://UserInterface/Option.tscn") + +onready var current_text = $Background/MarginContainer/Rows/GameInfo/CurrentText +onready var options_container = $Background/MarginContainer/Rows/InputArea/ScrollContainer/OptionsContainer +onready var pSingleton = get_node("/root/PlayerCharacter") +onready var charSheet = $Con_charSheet/MarginContainer/VBoxContainer/CharacterSheet + + +#DKM TEMP: this is just a temp file solution for grabbing map/module, will be replaced with DB +# or desired load approach +onready var module_map = "res://_userFiles/temp_map.save" + +var nodeArray + +func _ready() -> void: + save_module() + theme=load(settings.themeFile) + + #DKM TEMP: testing: + var moduleDict = loadJSONToDict(module_file_path) + + #DKM TEMP: this needs to be refactored to reposition this initialization + var i = 0 + #print("Looking for JSON at: " + module_file_path) + #print("Json returned as: " + str(moduleDict)) + var initialNode = Locale.new() + nodeArray = [initialNode] + for moduleNode in moduleDict.values(): + if nodeArray.size() <= i: + var newNode = Locale.new() + nodeArray.append(newNode) + nodeArray[i].locale_name = moduleNode.get("Id") + nodeArray[i].locale_description = moduleNode.get("Text") + nodeArray[i].locale_action = moduleNode.get("Action") + var actionParameters = moduleNode.get("A_Params") + for p in actionParameters: + nodeArray[i].locale_action_params.append(p) + var nodeOptions = moduleNode.get("Option_Labels") + for option in nodeOptions: + nodeArray[i].options_array.append(option) + #print("For #" + str(i) + ": appended option of: " + str(option)) + var nodeDestinations = moduleNode.get("Option_GoTos") + for dest in nodeDestinations: + nodeArray[i].destinations_array.append(dest) + #print("For #" + str(i) + ": appended go to destination of: " + str(dest)) + #print("Node array name for #" + str(i) + ": " + nodeArray[i].locale_name) + i = i+1 + + current_text.show() + + #Load character sheet: + charSheet.text = pSingleton.pc.pcText + + create_response(nodeArray[0].locale_description) + #DKM TEMP: another that needs to be broken out when ready: + clear_prior_options() + i = 0 + for option in nodeArray[0].options_array: + var destArr = nodeArray[0].destinations_array + create_option(option, destArr[i]) + i = i+1 + options_container.get_child(0).grab_focus() + +#DKM TEMP: convert JSON file to dictionary for module import: +func loadJSONToDict(filepath:String)->Dictionary: + var file = File.new() + #assert file.file_exists(filepath) + file.open(filepath,file.READ) + var moduleDict = parse_json(file.get_as_text()) + #assert moduleDict.size() > 0 + return moduleDict + + +#Handles input text +func create_response(response_text: String): + var response = TextOutput.instance() + response.text = response_text + add_response_to_game(response) + +#Copies the response output to add to both current game output, and the +# history array. +func add_response_to_game(response: Control): + add_response_to_history(response) + if(current_text.get_child_count() > 0): + current_text.remove_child(current_text.get_child(0)) + current_text.add_child(response) + +func add_response_to_history(response: Control) -> void: + #DKM TEMP: so here we + #1. var response_history = response.duplicate() + var response_for_history = response.duplicate() + #2. get the history array from the singleton, + #3. Add this to the history array + history_source.output_history_array.append(response_for_history) + +func clear_prior_options() -> void: + for n in options_container.get_children(): + options_container.remove_child(n) + n.queue_free() + +func create_option(option: String, dest: String) -> void: + #print("Received request to make option for label: " + option +"; and destination: " + dest) + var optionNew = OptionOutput.instance() + optionNew.destinationLabel = dest + optionNew.text = option + add_option_to_game(optionNew) + +func add_option_to_game(optionNew: Control) -> void: + options_container.add_child(optionNew) + var newOptNumber = options_container.get_child_count() + if newOptNumber-1 >= 0: + #print("New added opt is: " + str(newOptNumber-1)) + options_container.get_child(newOptNumber-1).connect("option_pressed", self, "_on_option_pressed") + +#DKM TEMP: these need to be dynamically added with the options themselves + +func _on_option_pressed(destinationSelected: String) -> void: + #print("Destination node for pressed option is: " + destinationSelected) + change_node(destinationSelected) + +func get_node_by_name(nodeName: String) -> Locale: + for n in nodeArray: + if n.locale_name == nodeName: + return n + return nodeArray[0] + +func change_node(destinationNode: String, _destinationParams: Array = []) -> void: + var target_Locale = get_node_by_name(destinationNode) + + #Run provided action: + if target_Locale.locale_action == "ShowText": + create_response(target_Locale.locale_description) + #DKM TEMP: another that needs to be broken out when ready: + clear_prior_options() + var i = 0 + for option in target_Locale.options_array: + var destArr = target_Locale.destinations_array + create_option(option, destArr[i]) + i = i+1 + elif target_Locale.locale_action == "TestDieRollAction" && target_Locale.destinations_array.size() == 1: + print("Running test action " + target_Locale.locale_action + "; with parameters of: ") + var nodeParameters = [] + var outputText = "Die types to be rolled: " + for param in target_Locale.locale_action_params: + print(param) + outputText = outputText + str(param) + " sided; " + nodeParameters.append(param) + #DKM TEST: testing the die roller with Andrew's code; randomly assigning percentage to pass. + # Should this param be optional if you purely want to roll dice? + var dieParams = nodeParameters + DiceRoller.dieManager.clearData() + DiceRoller.dieManager.setDieManager(dieParams, 0.5) + var result = DiceRoller.dieManager.rollDice() + print("Rolled values: " + str(result[0])) + outputText = outputText + "with values: " + str(result[0]) + create_response(outputText) + #DKM TEMP: Andrew's code for ref: + #assigning variable names to each of them for better clarity +# var rolledValues = result[0] +# var percentRolled = result[1] +# var passResult = result[2] +# var neededPercent = result[3] +# var degreeOfSuccess = result[4] +# var dice = result[5] + + #change_node(target_Locale.destinations_array[0]) + options_container.get_child(0).grab_focus() + + +#DKM TEMP: saves the entire scene in one packed scene file +func save_module(): + var scene = PackedScene.new() + scene.pack(self) + #var _saveResponse = ResourceSaver.save("user://game_01.tscn", scene) + var _saveResponse = ResourceSaver.save("res://_userFiles/game_01.tscn", scene) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/Game.tscn b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/Game.tscn new file mode 100644 index 0000000..78851ec --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/Game.tscn @@ -0,0 +1,192 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://gamePlay/But_Option.tscn" type="PackedScene" id=1] +[ext_resource path="res://gamePlay/Game.gd" type="Script" id=2] +[ext_resource path="res://assets/ui_controlNode_dark_theme.tres" type="Theme" id=3] +[ext_resource path="res://gamePlay/But_MoreOptions.gd" type="Script" id=9] + +[node name="Game" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 3 ) +script = ExtResource( 2 ) + +[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( 9 ) +__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" parent="Background/MarginContainer/Rows/InputArea/ScrollContainer/OptionsContainer" instance=ExtResource( 1 )] +margin_right = 108.0 + +[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"] diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/LocaleManager.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/LocaleManager.gd new file mode 100644 index 0000000..e0ba69c --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/gamePlay/LocaleManager.gd @@ -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) + + + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/DiceRoller.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/DiceRoller.gd new file mode 100644 index 0000000..858415a --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/DiceRoller.gd @@ -0,0 +1,69 @@ +#This script is for the overarching node that will contain the diemanager singleton +#It should be the only one of the die scripts that is attached onto a node. + +extends Control + +#desired dice types and needed percentage to pass are selected by game/user +#desiredDice takes an int array representing the # sides on the die/dice +#neededPercentageToPass takes a float that +export var desiredDice: Array +export var neededPercentageToPass: float + +#Define dieManager variable +var dieManager + +func _ready(): + #create diemanager object + dieManager = DieManager.new(desiredDice, neededPercentageToPass) + +#function gets the result of the roll(s) and shows it in the UI +func _on_Die_button_down(): + #rollDice function returns an array with the following elements in the following positions: + #rollDice result: [[rolledValues], percentRolled, passResult, neededPercent, degreeOfSuccess, dice] + var result = dieManager.rollDice() + + + #assigning variable names to each of them for better clarity + var rolledValues = result[0] + var percentRolled = result[1] + var passResult = result[2] + var neededPercent = result[3] + var degreeOfSuccess = result[4] + var dice = result[5] + + + #Check if passed or not + if passResult: + $Outcome.text = "Successful Roll!" + else: + $Outcome.text = "Failed Roll!" + + var diceResultText = "Rolled Values:\n" + + #Prints the integer calues of each die rolled in the form: "D(num faces): (value rolled)" + for i in range(dice.size()): + diceResultText += ("D" + str(dice[i]) + ": " + str(rolledValues[i]) + "\n") + + #changing labels on screen + $RolledValues.text = diceResultText + $PercentNeeded.text = "Percent Needed to Pass: " + str(neededPercent * 100) + "%" + $PercentRolled.text = "Percent Rolled: " + str(percentRolled * 100) + "%" + $DegreeOfSuccess.text = "Degree of Success: " + str(degreeOfSuccess * 100) + "%" + + #revealing labels to user + $Outcome.show() + $RolledValues.show() + $PercentNeeded.show() + $PercentRolled.show() + $DegreeOfSuccess.show() + + +#Calls the cleardata method for the diemanager and hides the text on screen +func _on_Reset_button_down(): + $Outcome.hide() + $PercentNeeded.hide() + $PercentRolled.hide() + $DegreeOfSuccess.hide() + $RolledValues.hide() + dieManager.clearData() + dieManager.setDieManager(desiredDice, neededPercentageToPass) diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/Die.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/Die.gd new file mode 100644 index 0000000..e2c7c66 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/Die.gd @@ -0,0 +1,24 @@ +#Die class +extends Node2D + +class_name Die + +#value of selected die type +var numFaces: int + +#Class constructor +func _init(value): + numFaces = value + +#returns an integer value of the rolled result (assuming the die is a valid type) +func rollDie(): + randomize() + + var rolledNum + rolledNum = randi() % numFaces + 1 + return rolledNum + + +#Returns the number of faces on this die +func getNumFaces(): + return numFaces diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/DieManager.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/DieManager.gd new file mode 100644 index 0000000..6579982 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/DieManager.gd @@ -0,0 +1,130 @@ +#This is the diemanager script that controls the rolling of the die/dice as well as calculates +#the end result + +class_name DieManager + +extends Node2D + +#Array of the desired dice values to mod god wants +var desiredDice: Array + +#User can select the percentage needed for a successful roll +var neededPercentageToPass: float + +var validDieTypes = [4, 6, 8, 10, 12, 20] +#boolean for if a percentageroll is taking place +#we need a boolean for this because the way a percentage roll is calculated +#with two D10s is different than if one were using other dice +var isPercentageRoll = false + +#diceUsed holds the dice objects that are rolled +var diceUsed = [] + +#rolledValues holds the integer value rolled from each die +var rolledValues = [] + +#boolean based on whether the overall roll passed or not +var passedRoll + +#float holding the degree of success (rolledVal - neededPercentageToPass) +var degreeOfSuccess + +#Constructor for diemanager class +func _init(dice, percent): + desiredDice = dice + neededPercentageToPass = percent + loadData() + +#set values of diemanager +func setDieManager(dice, percent): + desiredDice = dice + neededPercentageToPass = percent + loadData() + +#Load the diceInPlay array +func loadData(): + for elem in desiredDice: + if elem in validDieTypes: + diceUsed.append(Die.new(elem)) + + #conditional to check if two D10s are being used + #if so, we know that a percentage roll is taking place + if len(desiredDice) == 2 && desiredDice[0] == 10 && desiredDice[1] == 10: + isPercentageRoll = true + +#Resets the data in the script +func clearData(): + isPercentageRoll = false + rolledValues = [] + desiredDice = [] + diceUsed = [] + neededPercentageToPass = 0 + +#Returns the percent value of an individual die +#Stores the rolled value in rolledValues +func returnDiePercentage(inputedDie): + #In case this method is being called on no dice + if len(diceUsed) == 0: + push_error("Cannot roll without any dice!") + + var rolledVal = inputedDie.rollDie() + + #add rolled integer value to array + rolledValues.append(rolledVal) + + #Checks if a percentageroll is being done + if isPercentageRoll: + #This conditional is used to detemrine if the rolled value is + #for the tens or ones digit + return float(rolledVal % 10) + + return float(rolledVal) / float(inputedDie.numFaces) + +#Rolls all of the dice in diceUsed +#returns the average of all the percentages +func rollDice(): + #In case this method is being called on no dice + if len(diceUsed) == 0: + push_error("Cannot roll without any dice!") + + #denominator will equal the total number of dice rolled + var denominator = 0 + + #sum of floats of all rolled die percentages + var sumOfPercentages = 0 + + if isPercentageRoll: + sumOfPercentages += (returnDiePercentage(diceUsed[0]) / 10.0) + (returnDiePercentage(diceUsed[1]) / 100.0) + else: + #DKM TEMP: not percentage roll: + print("TEMP: not percentage roll") + for die in diceUsed: + sumOfPercentages += returnDiePercentage(die) + denominator += 1 + + var result = [] + + result.append(rolledValues) + + if isPercentageRoll: + #Percentage roll result remains the sum of the rolls + result.append(sumOfPercentages) + else: + if denominator == 0: + result.append(0) + #result is average of sum of percentages otherwise rounded to 2 decimcal places + + result.append(stepify((float(sumOfPercentages) / float(denominator)), 0.0001)) + + passedRoll = (result[1] >= neededPercentageToPass) +#NOTE: degree of success is always calculated regardlesss of success/failure. Let me know if this should be changed + degreeOfSuccess = result[1] - neededPercentageToPass + result.append(passedRoll) + result.append(neededPercentageToPass) + result.append(degreeOfSuccess) + result.append(desiredDice) + + #rollDice result: [[rolledValues], percentRolled, passResult, neededPercent, degreeOfSuccess, dice] + return result + + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/PlayerCharacter.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/PlayerCharacter.gd new file mode 100644 index 0000000..4abaece --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/PlayerCharacter.gd @@ -0,0 +1,11 @@ +#PLAYER CHARACTER: +# Unique handler script for root PC singleton. May be adapted for +# player loading and saving functionality + +extends Node + +var pc + +func _ready() -> void: + pc = playerCharacterTemplate.new() + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/gameCurrent.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/gameCurrent.gd new file mode 100644 index 0000000..cbb8d02 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/gameCurrent.gd @@ -0,0 +1,10 @@ +#gameCurrent: +# Simple singleton script for storing persistent game cene paths. +# These must then not be destroyed, but manually removed as a child of the +# node and they can always be re-added as needed. + +extends Node + +var gameCurrent_scene + + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/globalSaveInstance.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/globalSaveInstance.gd new file mode 100644 index 0000000..3769126 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/globalSaveInstance.gd @@ -0,0 +1,44 @@ +extends Node + +# Declare new settings template object +var settingsInstance = PlayerSettingsTemplate.new() +var settings_file = "res://_userFiles/PlayerPreferences.cfg" + +func _ready() -> void: + load_settings_file() + + #Config/ini: +func load_settings_file(): + var config = ConfigFile.new() + # Load data from a file. + var err = config.load(settings_file) + # If the file didn't load, ignore it. + if err != OK: + return + #Preferences: + settingsInstance.inputName = config.get_value("player_preferences", "player_name") + settingsInstance.riskFactor = config.get_value("player_preferences", "risk_threshold") + #Controls: + settingsInstance.fontSize = config.get_value("visual_controls", "font_size") + settingsInstance.brightness = config.get_value("visual_controls", "brightness") + #General Settings: + settingsInstance.volume = config.get_value("general_settings", "volume") + settingsInstance.bClosedCaptions = config.get_value("general_settings", "closed_captions") + settingsInstance.bdevConsole = config.get_value("general_settings", "dev_console") + #Keyboard: + settingsInstance.visualKeyboardLayout = config.get_value("virtual_keyboard", "keyboard_layout") + #Theme: + settingsInstance.themeChoiceInt = config.get_value("theme", "theme_selection") + + load_themeFile() + + #DKM TEMP: working + print("Input name loaded as: " + str(settingsInstance.inputName)) + print("Theme loaded as: " + str(settingsInstance.themeFile)) + +func load_themeFile() -> void: + #DKM TEMP: this shouldn't be hard-coded: + if(settingsInstance.themeChoiceInt == 1): + settingsInstance.themeFile = "res://assets/ui_controlNode_light_theme.tres" + else: + settingsInstance.themeFile = "res://assets/ui_controlNode_dark_theme.tres" diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/history.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/history.gd new file mode 100644 index 0000000..bf20f7a --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/history.gd @@ -0,0 +1,32 @@ +#HISTORY: +# Unique handler script for root history singleton. May be adapted for +# history loading and saving functionality + +extends Node + + +#DKM TEMP: not a cfg? **Cannot use user +#var history_file = "user://history.tres" +var history_file = "res://_userFiles.history.tres" +var historyScreensSingleton +var testing = false + +func _ready() -> void: + if(testing): + historyScreensSingleton = load_history_file() + if (historyScreensSingleton == null): + historyScreensSingleton = HistoryScreensTemplateSingleton.new() + + #DKM temp: + print("Loaded history array size is: " + str(historyScreensSingleton.output_history_array.size())) + +#DKM TEMP: load using tres format: +func load_history_file() -> HistoryScreensTemplateSingleton: + if ResourceLoader.exists(history_file): + var history = ResourceLoader.load(history_file) + if history is HistoryScreensTemplateSingleton: + return history + else: return null + else: + return null + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/historyScreensTemplate.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/historyScreensTemplate.gd new file mode 100644 index 0000000..6ab536f --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/historyScreensTemplate.gd @@ -0,0 +1,8 @@ +#PLAYERSETTINGSTEMPLATE: +# Class for holding history screens +extends Resource + +class_name HistoryScreensTemplateSingleton + +var output_history_array = Array() + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/playerCharacterTemplate.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/playerCharacterTemplate.gd new file mode 100644 index 0000000..a8665ce --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/playerCharacterTemplate.gd @@ -0,0 +1,8 @@ +#PLAYER CHARACTER TEMPLATE: +# Template for holding loaded/current character + +extends Resource + +class_name playerCharacterTemplate + +var pcText = "" diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/playerSettingsTemplate.gd b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/playerSettingsTemplate.gd new file mode 100644 index 0000000..acd3d60 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/globalScripts/playerSettingsTemplate.gd @@ -0,0 +1,26 @@ +extends Node + +class_name PlayerSettingsTemplate + +# Declare Setting Options, to be used inside of the settings menu +var inputName = "none" +var riskFactor = 0 +var brightness = 3 +var fontSize = 11 +var volume = 6 +var bClosedCaptions = true +var bdevConsole = false +var bVirtualKeyboard = false + +# Setting of 0 is Qwerty, Setting of 1 is Davorak, Setting of 2 is Alphabetical +var visualKeyboardLayout = 0 + +# Setting of 0 is dark, setting of 1 is light, and so on +var themeChoiceInt = 0 +var themeFile = "res://assets/ui_controlNode_dark_theme.tres" + +func _ready(): + pass + + + diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/icon.png b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/icon.png new file mode 100644 index 0000000..c98fbb6 Binary files /dev/null and b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/icon.png differ diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/icon.png.import b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/icon.png.import new file mode 100644 index 0000000..96cbf46 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.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 diff --git a/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/project.godot b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/project.godot new file mode 100644 index 0000000..07b4021 --- /dev/null +++ b/Phase2/Godot_GameCode/_MVP_Game_Demo/Doug/bcirpg_game_mvp_2024_0204A/project.godot @@ -0,0 +1,71 @@ +; 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=4 + +_global_script_classes=[ { +"base": "Node2D", +"class": "Die", +"language": "GDScript", +"path": "res://globalScripts/Die.gd" +}, { +"base": "Node2D", +"class": "DieManager", +"language": "GDScript", +"path": "res://globalScripts/DieManager.gd" +}, { +"base": "Resource", +"class": "HistoryScreensTemplateSingleton", +"language": "GDScript", +"path": "res://globalScripts/historyScreensTemplate.gd" +}, { +"base": "PanelContainer", +"class": "Locale", +"language": "GDScript", +"path": "res://UserInterface/Locale.gd" +}, { +"base": "Node", +"class": "PlayerSettingsTemplate", +"language": "GDScript", +"path": "res://globalScripts/playerSettingsTemplate.gd" +}, { +"base": "Resource", +"class": "playerCharacterTemplate", +"language": "GDScript", +"path": "res://globalScripts/playerCharacterTemplate.gd" +} ] +_global_script_class_icons={ +"Die": "", +"DieManager": "", +"HistoryScreensTemplateSingleton": "", +"Locale": "", +"PlayerSettingsTemplate": "", +"playerCharacterTemplate": "" +} + +[application] + +config/name="BCIRPGR_game_mvp" +run/main_scene="res://Screens/MenuScreen.tscn" +config/icon="res://icon.png" + +[autoload] + +History="*res://globalScripts/history.gd" +PlayerCharacter="*res://globalScripts/PlayerCharacter.gd" +DiceRoller="*res://globalScripts/DiceRoller.gd" +GlobalSaveInstance="*res://globalScripts/globalSaveInstance.gd" +GameCurrent="*res://globalScripts/gameCurrent.gd" + +[physics] + +common/enable_pause_aware_picking=true + +[rendering] + +environment/default_environment="res://default_env.tres"