Updates MVP Game Code for XML (cont'd)

Updates working XML and continues update on file parser; currently working on building the dict we can use to run our game (as JSON version currently runs game).
This commit is contained in:
MacDugRPG 2024-03-17 15:27:33 -04:00
parent 8d3f317f01
commit de608e7c33
3 changed files with 103 additions and 72 deletions

View File

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

View File

@ -1,16 +1,16 @@
[gd_scene load_steps=6 format=2]
[ext_resource path="res://gamePlay/Game.gd" type="Script" id=1]
[ext_resource path="res://gamePlay/But_MoreOptions.gd" type="Script" id=2]
[ext_resource path="res://gamePlay/But_Option.tscn" type="PackedScene" id=3]
[ext_resource path="res://assets/ui_controlNode_dark_theme.tres" type="Theme" id=1]
[ext_resource path="res://gamePlay/But_Option.tscn" type="PackedScene" id=2]
[ext_resource path="res://gamePlay/Game.gd" type="Script" id=3]
[ext_resource path="res://assets/liberation_serif_30pt.tres" type="DynamicFont" id=4]
[ext_resource path="res://assets/ui_controlNode_dark_theme.tres" type="Theme" id=5]
[ext_resource path="res://gamePlay/But_MoreOptions.gd" type="Script" id=5]
[node name="Game" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
theme = ExtResource( 5 )
script = ExtResource( 1 )
theme = ExtResource( 1 )
script = ExtResource( 3 )
[node name="Background" type="PanelContainer" parent="."]
anchor_right = 1.0
@ -46,7 +46,7 @@ rect_min_size = Vector2( 0, 40 )
margin_right = 197.0
margin_bottom = 36.0
text = "More Options"
script = ExtResource( 2 )
script = ExtResource( 5 )
__meta__ = {
"_edit_use_anchors_": false
}
@ -84,7 +84,7 @@ 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 )]
[node name="option1" type="Button" parent="Background/MarginContainer/Rows/InputArea/ScrollContainer/OptionsContainer" instance=ExtResource( 2 )]
margin_right = 108.0
margin_bottom = 36.0
custom_fonts/font = ExtResource( 4 )

View File

@ -95,7 +95,7 @@ func loadJSONToDict(filepath:String)->Dictionary:
func loadXMLDemo(filepath:String):
print("TEST! Trying to open xml at " + filepath)
var test_array = []
var xml_data = {}
var parser = XMLParser.new()
var error = parser.open(filepath)
if error != OK:
@ -111,19 +111,50 @@ func loadXMLDemo(filepath:String):
#DKM TEMP: printer; probably don't need the strip_edges, was looking to remove white space.
# Looks like it reads the closing tags, too, which is a bummer.
while true:
if parser.read() != OK:
print("Parser read not okay!")
return
else:
var px = parser.get_node_name()
px.strip_edges(true,true)
if(!px.empty()):
print("Node Named: " + px)
px = parser.get_node_data()
px.strip_edges(true,true)
if(!px.empty()):
print("Data: " + px)
#DKM TEMP: Test print output brute force
# while true:
# if parser.read() != OK:
# print("Parser read not okay!")
# return
# else:
# var px = parser.get_node_name()
# px.strip_edges(true,true)
# if(!px.empty()):
# print("Node Named: " + px)
# px = parser.get_node_data()
# px.strip_edges(true,true)
# if(!px.empty()):
# print("Data: " + px)
while parser.read() == OK:
if parser.get_node_type() == XMLParser.NODE_ELEMENT:
var node_name = parser.get_node_name()
if node_name.strip_edges(true,true).to_upper() == "LOCATION":
while parser.read() == OK:
if parser.get_node_type() == XMLParser.NODE_ELEMENT:
if parser.get_node_name().strip_edges(true,true).to_upper() == "LOCATION":
break
var child_node_name = parser.get_node_name()
#DKM TEMP: we need to switch/match all this, but still wrapping head around this parsing
print(child_node_name.strip_edges(true,true).to_upper())
if child_node_name.strip_edges(true,true).to_upper() == "ID":
parser.read()
var id_node_data = parser.get_node_data()
print("TEMP: ID found, named: " + str(id_node_data))
xml_data[id_node_data] = {}
# xml_data[node_name] = {}
# for i in range(parser.get_attribute_count()):
# var key = parser.get_attribute_name(i)
# var value = parser.get_attribute_value(i)
# xml_data[node_name][key] = value
#DKM TEMP: test dictionary output:
# print("TEST: printing XML dictionary values: ")
# for val in xml_data.values():
# print(val)