mirror of
https://github.com/RPG-Research/bcirpg.git
synced 2024-04-16 14:23:01 +00:00
Merge branch 'master' of https://github.com/RPG-Research/bcirpg
This commit is contained in:
commit
2081170dd4
@ -0,0 +1,3 @@
|
|||||||
|
source_md5="b918ce36c79140123ba6299230647b74"
|
||||||
|
dest_md5="4a3acb68f07fc2d17b50af0660f3c0ca"
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
source_md5="dd2844f8b96c7a7f955098cd2ce51510"
|
||||||
|
dest_md5="deb4ac7c88acaaec693aea232ca4b9e5"
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
source_md5="766d733b8edaa28cdf98e68e20ceba59"
|
||||||
|
dest_md5="e416e3ec46373a873cfc4afbf066c70f"
|
||||||
|
|
@ -12,8 +12,8 @@
|
|||||||
"Action":"ShowText",
|
"Action":"ShowText",
|
||||||
"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":"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_Labels":["Examine Ship","Climb out through hatch","Play the fiddle!","Rest","Meditate", "Run generic die roll test", "Do strength check on percentile die"],
|
||||||
"Option_GoTos":["Boat_002","Shore_001","Misc_001","Misc_002","Misc_003","Test_000"]
|
"Option_GoTos":["Boat_002","Shore_001","Misc_001","Misc_002","Misc_003","Test_000","Test_002"]
|
||||||
},
|
},
|
||||||
"Node_Boat_002":{
|
"Node_Boat_002":{
|
||||||
"Id":"Boat_002",
|
"Id":"Boat_002",
|
||||||
@ -67,7 +67,23 @@
|
|||||||
"Id":"Test_001",
|
"Id":"Test_001",
|
||||||
"Action":"TestHandleNodeParams",
|
"Action":"TestHandleNodeParams",
|
||||||
"A_Params":"",
|
"A_Params":"",
|
||||||
"Text":"Die were rolled and passed to this node as: ",
|
"Text":"Dice were rolled and passed to this node as: ",
|
||||||
|
"Option_Labels":["Back to boat"],
|
||||||
|
"Option_GoTos":["Boat_001"]
|
||||||
|
},
|
||||||
|
"Node_Test002":{
|
||||||
|
"Id":"Test_002",
|
||||||
|
"Action":"RollDice",
|
||||||
|
"A_Params":[10,10],
|
||||||
|
"Text":"Dice were rolled and passed to this node as: ",
|
||||||
|
"Option_Labels":["NA"],
|
||||||
|
"Option_GoTos":["Test_003"]
|
||||||
|
},
|
||||||
|
"Node_Test003":{
|
||||||
|
"Id":"Test_003",
|
||||||
|
"Action":"TestAbstractAbilityCheck",
|
||||||
|
"A_Params":["ST"],
|
||||||
|
"Text":"Ability check run on strength resulted in: ",
|
||||||
"Option_Labels":["Back to boat"],
|
"Option_Labels":["Back to boat"],
|
||||||
"Option_GoTos":["Boat_001"]
|
"Option_GoTos":["Boat_001"]
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
keys,en
|
||||||
|
Name,Jon
|
||||||
|
Race,Person
|
||||||
|
Class,CSV
|
||||||
|
AG,65
|
||||||
|
APP,50
|
||||||
|
CO,55
|
||||||
|
QU,55
|
||||||
|
MD,60
|
||||||
|
ST,60
|
||||||
|
CH,72
|
||||||
|
EM,45
|
||||||
|
IN,50
|
||||||
|
ME,40
|
||||||
|
MX,55
|
||||||
|
PR,55
|
||||||
|
RE,30
|
||||||
|
SD,25
|
||||||
|
Weapon,Mighty Pen
|
||||||
|
Armor,Sweater vest +1
|
|
@ -0,0 +1,16 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="csv_translation"
|
||||||
|
type="Translation"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
files=[ "res://_userFiles/characterFiles/testingCSVCharFile_bci-rpg_sris_test001.en.translation" ]
|
||||||
|
|
||||||
|
source_file="res://_userFiles/characterFiles/testingCSVCharFile_bci-rpg_sris_test001.csv"
|
||||||
|
dest_files=[ "res://_userFiles/characterFiles/testingCSVCharFile_bci-rpg_sris_test001.en.translation" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress=true
|
||||||
|
delimiter=0
|
Binary file not shown.
@ -0,0 +1,13 @@
|
|||||||
|
keys,en
|
||||||
|
Name,The Epic Test
|
||||||
|
Race,Robot
|
||||||
|
Class,CSV
|
||||||
|
Str,16
|
||||||
|
Int,19
|
||||||
|
Wis,3
|
||||||
|
Dex,10
|
||||||
|
Con,11
|
||||||
|
Chr,8
|
||||||
|
HP,72
|
||||||
|
Weapon,Comma + 2
|
||||||
|
Armor,Obfuscating shield
|
|
@ -0,0 +1,16 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="csv_translation"
|
||||||
|
type="Translation"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
files=[ "res://_userFiles/characterFiles/testingCSVCharFile_libre.en.translation" ]
|
||||||
|
|
||||||
|
source_file="res://_userFiles/characterFiles/testingCSVCharFile_libre.csv"
|
||||||
|
dest_files=[ "res://_userFiles/characterFiles/testingCSVCharFile_libre.en.translation" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress=true
|
||||||
|
delimiter=0
|
Binary file not shown.
@ -0,0 +1,14 @@
|
|||||||
|
keys,en
|
||||||
|
Name,Jon
|
||||||
|
Race,Person
|
||||||
|
Class,CSV
|
||||||
|
ST,55
|
||||||
|
QU,35
|
||||||
|
PR,50
|
||||||
|
IN,35
|
||||||
|
EM,35
|
||||||
|
CO,65
|
||||||
|
AG,55
|
||||||
|
SD,75
|
||||||
|
ME,25
|
||||||
|
RE,40
|
|
@ -0,0 +1,16 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="csv_translation"
|
||||||
|
type="Translation"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
files=[ "res://_userFiles/characterFiles/testingCSVCharFile_rolemaster_test001.en.translation" ]
|
||||||
|
|
||||||
|
source_file="res://_userFiles/characterFiles/testingCSVCharFile_rolemaster_test001.csv"
|
||||||
|
dest_files=[ "res://_userFiles/characterFiles/testingCSVCharFile_rolemaster_test001.en.translation" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress=true
|
||||||
|
delimiter=0
|
Binary file not shown.
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
#Source for module file: to the GU
|
#Source for module file:
|
||||||
#export(String, FILE, "*.json") var module_file_path:String
|
#export(String, FILE, "*.json") var module_file_path:String
|
||||||
#DKM TEMP:
|
#DKM TEMP:
|
||||||
var module_file_path = "res://_userFiles/Module_Demo_001.json"
|
var module_file_path = "res://_userFiles/Module_Demo_001.json"
|
||||||
@ -22,24 +22,20 @@ onready var options_container = $Background/MarginContainer/Rows/InputArea/Scrol
|
|||||||
onready var pSingleton = get_node("/root/PlayerCharacter")
|
onready var pSingleton = get_node("/root/PlayerCharacter")
|
||||||
onready var charSheet = $Con_charSheet/MarginContainer/VBoxContainer/CharacterSheet
|
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
|
var nodeArray
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
save_module()
|
|
||||||
theme=load(settings.themeFile)
|
theme=load(settings.themeFile)
|
||||||
|
#Initialize module and display text:
|
||||||
|
load_new_module()
|
||||||
|
current_text.show()
|
||||||
|
#Load character sheet:
|
||||||
|
charSheet.text = pSingleton.pc.pcText
|
||||||
|
|
||||||
#DKM TEMP: testing:
|
#Initializes the default module:
|
||||||
var moduleDict = loadJSONToDict(module_file_path)
|
func load_new_module() -> void:
|
||||||
|
var moduleDict = load_JSON_to_dict(module_file_path)
|
||||||
#DKM TEMP: this needs to be refactored to reposition this initialization
|
|
||||||
var i = 0
|
var i = 0
|
||||||
#print("Looking for JSON at: " + module_file_path)
|
|
||||||
#print("Json returned as: " + str(moduleDict))
|
|
||||||
var initialNode = Locale.new()
|
var initialNode = Locale.new()
|
||||||
nodeArray = [initialNode]
|
nodeArray = [initialNode]
|
||||||
for moduleNode in moduleDict.values():
|
for moduleNode in moduleDict.values():
|
||||||
@ -62,14 +58,8 @@ func _ready() -> void:
|
|||||||
#print("For #" + str(i) + ": appended go to destination of: " + str(dest))
|
#print("For #" + str(i) + ": appended go to destination of: " + str(dest))
|
||||||
#print("Node array name for #" + str(i) + ": " + nodeArray[i].locale_name)
|
#print("Node array name for #" + str(i) + ": " + nodeArray[i].locale_name)
|
||||||
i = i+1
|
i = i+1
|
||||||
|
|
||||||
current_text.show()
|
|
||||||
|
|
||||||
#Load character sheet:
|
|
||||||
charSheet.text = pSingleton.pc.pcText
|
|
||||||
|
|
||||||
create_response(nodeArray[0].locale_description)
|
create_response(nodeArray[0].locale_description)
|
||||||
#DKM TEMP: another that needs to be broken out when ready:
|
|
||||||
clear_prior_options()
|
clear_prior_options()
|
||||||
i = 0
|
i = 0
|
||||||
for option in nodeArray[0].options_array:
|
for option in nodeArray[0].options_array:
|
||||||
@ -78,17 +68,28 @@ func _ready() -> void:
|
|||||||
i = i+1
|
i = i+1
|
||||||
options_container.get_child(0).grab_focus()
|
options_container.get_child(0).grab_focus()
|
||||||
|
|
||||||
#DKM TEMP: convert JSON file to dictionary for module import:
|
#Master method for handling user interaction:
|
||||||
func loadJSONToDict(filepath:String)->Dictionary:
|
func change_node(destinationNode: String, destinationParams: Array = []) -> void:
|
||||||
var file = File.new()
|
var target_Locale = get_node_by_name(destinationNode)
|
||||||
#assert file.file_exists(filepath)
|
#Run provided action:
|
||||||
file.open(filepath,file.READ)
|
if target_Locale.locale_action == "ShowText":
|
||||||
var moduleDict = parse_json(file.get_as_text())
|
action_show_text(target_Locale)
|
||||||
#assert moduleDict.size() > 0
|
elif target_Locale.locale_action == "RollDice" && target_Locale.destinations_array.size() == 1:
|
||||||
return moduleDict
|
action_roll_die(target_Locale)
|
||||||
|
#DKM TEMP: testing passed param handling by node to node
|
||||||
|
elif target_Locale.locale_action == "TestHandleNodeParams":
|
||||||
|
action_handle_node_params_testing(target_Locale, destinationParams)
|
||||||
|
#DKM TEMP: running an ability check test on passed node:
|
||||||
|
elif target_Locale.locale_action == "TestAbstractAbilityCheck":
|
||||||
|
action_ability_check_testing(target_Locale, destinationParams)
|
||||||
|
|
||||||
|
options_container.get_child(0).grab_focus()
|
||||||
|
|
||||||
|
|
||||||
#Handles input text
|
####################################################
|
||||||
|
#DISPLAY METHODS:
|
||||||
|
# Handles output text and options
|
||||||
|
####################################################
|
||||||
func create_response(response_text: String):
|
func create_response(response_text: String):
|
||||||
var response = TextOutput.instance()
|
var response = TextOutput.instance()
|
||||||
response.text = response_text
|
response.text = response_text
|
||||||
@ -103,11 +104,7 @@ func add_response_to_game(response: Control):
|
|||||||
current_text.add_child(response)
|
current_text.add_child(response)
|
||||||
|
|
||||||
func add_response_to_history(response: Control) -> void:
|
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()
|
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)
|
history_source.output_history_array.append(response_for_history)
|
||||||
|
|
||||||
func clear_prior_options() -> void:
|
func clear_prior_options() -> void:
|
||||||
@ -129,36 +126,15 @@ func add_option_to_game(optionNew: Control) -> void:
|
|||||||
#print("New added opt is: " + str(newOptNumber-1))
|
#print("New added opt is: " + str(newOptNumber-1))
|
||||||
options_container.get_child(newOptNumber-1).connect("option_pressed", self, "_on_option_pressed")
|
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:
|
func _on_option_pressed(destinationSelected: String) -> void:
|
||||||
#print("Destination node for pressed option is: " + destinationSelected)
|
#print("Destination node for pressed option is: " + destinationSelected)
|
||||||
change_node(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":
|
|
||||||
action_show_text(target_Locale)
|
|
||||||
elif target_Locale.locale_action == "RollDice" && target_Locale.destinations_array.size() == 1:
|
|
||||||
action_roll_die(target_Locale)
|
|
||||||
#DKM TEMP: testing passed param handling by node to node
|
|
||||||
elif target_Locale.locale_action == "TestHandleNodeParams":
|
|
||||||
create_response(target_Locale.locale_description + str(destinationParams))
|
|
||||||
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
|
|
||||||
options_container.get_child(0).grab_focus()
|
|
||||||
|
|
||||||
|
####################################################
|
||||||
|
#ACTION HANDLERS:
|
||||||
|
# Process actions from selected nodes
|
||||||
|
####################################################
|
||||||
func action_show_text(newLocale: Locale) -> void:
|
func action_show_text(newLocale: Locale) -> void:
|
||||||
create_response(newLocale.locale_description)
|
create_response(newLocale.locale_description)
|
||||||
clear_prior_options()
|
clear_prior_options()
|
||||||
@ -181,19 +157,66 @@ func action_roll_die(newLocale: Locale) -> void:
|
|||||||
DiceRoller.dieManager.setDieManager(dieParams, 0.5)
|
DiceRoller.dieManager.setDieManager(dieParams, 0.5)
|
||||||
var result = DiceRoller.dieManager.rollDice()
|
var result = DiceRoller.dieManager.rollDice()
|
||||||
print("Rolled values: " + str(result[0]))
|
print("Rolled values: " + str(result[0]))
|
||||||
|
if(DiceRoller.dieManager.isPercentageRoll):
|
||||||
#DKM TEMP: Andrew's code for ref:
|
var percDie = int(result[1]*100)
|
||||||
#assigning variable names to each of them for better clarity
|
print("DKM TEMP: is percentage roll and perc res is: " + str(percDie))
|
||||||
# var rolledValues = result[0]
|
var perc_result = [percDie]
|
||||||
# var percentRolled = result[1]
|
change_node(newLocale.destinations_array[0], perc_result)
|
||||||
# var passResult = result[2]
|
else:
|
||||||
# var neededPercent = result[3]
|
|
||||||
# var degreeOfSuccess = result[4]
|
|
||||||
# var dice = result[5]
|
|
||||||
change_node(newLocale.destinations_array[0], result[0])
|
change_node(newLocale.destinations_array[0], result[0])
|
||||||
|
|
||||||
#DKM TEMP: saves the entire scene in one packed scene file
|
|
||||||
func save_module():
|
#TESTING ACTIONS:
|
||||||
var scene = PackedScene.new()
|
#Test version of ability check -- only built our for strength and agility with this output
|
||||||
scene.pack(self)
|
func action_ability_check_testing(t_Locale: Locale, d_Params: Array = []) -> void:
|
||||||
ResourceSaver.save("user://game_01.tscn", scene)
|
var check_result ="NA"
|
||||||
|
print("Testing: passed stat is :" +t_Locale.locale_action_params[0])
|
||||||
|
if(t_Locale.locale_action_params[0] in pSingleton.pc.viableCharStats):
|
||||||
|
match t_Locale.locale_action_params[0]:
|
||||||
|
"AG":
|
||||||
|
if(int(d_Params[0])<= pSingleton.pc.agility):
|
||||||
|
check_result = "PASS"
|
||||||
|
else:
|
||||||
|
check_result = "FAIL"
|
||||||
|
"ST":
|
||||||
|
if(int(d_Params[0])<= pSingleton.pc.strength):
|
||||||
|
check_result = "PASS"
|
||||||
|
else:
|
||||||
|
check_result = "FAIL"
|
||||||
|
|
||||||
|
create_response(t_Locale.locale_description + check_result + " with roll of: " + str(d_Params) + "; on ability of: " + str(pSingleton.pc.strength))
|
||||||
|
clear_prior_options()
|
||||||
|
var i = 0
|
||||||
|
for option in t_Locale.options_array:
|
||||||
|
var destArr = t_Locale.destinations_array
|
||||||
|
create_option(option, destArr[i])
|
||||||
|
i = i+1
|
||||||
|
|
||||||
|
func action_handle_node_params_testing(t_Locale: Locale, d_Params: Array = []) -> void:
|
||||||
|
create_response(t_Locale.locale_description + str(d_Params))
|
||||||
|
clear_prior_options()
|
||||||
|
var i = 0
|
||||||
|
for option in t_Locale.options_array:
|
||||||
|
var destArr = t_Locale.destinations_array
|
||||||
|
create_option(option, destArr[i])
|
||||||
|
i = i+1
|
||||||
|
|
||||||
|
####################################################
|
||||||
|
#HELPER METHODS:
|
||||||
|
####################################################
|
||||||
|
func get_node_by_name(nodeName: String) -> Locale:
|
||||||
|
for n in nodeArray:
|
||||||
|
if n.locale_name == nodeName:
|
||||||
|
return n
|
||||||
|
return nodeArray[0]
|
||||||
|
|
||||||
|
#Convert JSON file to dictionary for module import:
|
||||||
|
# DKM TEMP: JSON only for development work -- will come from alt data source
|
||||||
|
func load_JSON_to_dict(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
|
||||||
|
|
||||||
|
@ -96,8 +96,6 @@ func rollDice():
|
|||||||
if isPercentageRoll:
|
if isPercentageRoll:
|
||||||
sumOfPercentages += (returnDiePercentage(diceUsed[0]) / 10.0) + (returnDiePercentage(diceUsed[1]) / 100.0)
|
sumOfPercentages += (returnDiePercentage(diceUsed[0]) / 10.0) + (returnDiePercentage(diceUsed[1]) / 100.0)
|
||||||
else:
|
else:
|
||||||
#DKM TEMP: not percentage roll:
|
|
||||||
print("TEMP: not percentage roll")
|
|
||||||
for die in diceUsed:
|
for die in diceUsed:
|
||||||
sumOfPercentages += returnDiePercentage(die)
|
sumOfPercentages += returnDiePercentage(die)
|
||||||
denominator += 1
|
denominator += 1
|
||||||
|
@ -6,3 +6,52 @@ extends Resource
|
|||||||
class_name playerCharacterTemplate
|
class_name playerCharacterTemplate
|
||||||
|
|
||||||
var pcText = ""
|
var pcText = ""
|
||||||
|
|
||||||
|
#BCO-RPG SRIS system (percentile):
|
||||||
|
var viableCharStats = ["AG",
|
||||||
|
"APP",
|
||||||
|
"CO",
|
||||||
|
"QU",
|
||||||
|
"MD",
|
||||||
|
"ST",
|
||||||
|
"CH",
|
||||||
|
"EM",
|
||||||
|
"IN",
|
||||||
|
"ME",
|
||||||
|
"MX",
|
||||||
|
"PR",
|
||||||
|
"RE",
|
||||||
|
"SD"]
|
||||||
|
|
||||||
|
var agility = 0
|
||||||
|
var appearance = 0
|
||||||
|
var constitution = 0
|
||||||
|
var quickness = 0
|
||||||
|
var manual_dexterity = 0
|
||||||
|
var strength = 0
|
||||||
|
var chutzpah = 0
|
||||||
|
var empathy = 0
|
||||||
|
var intuition = 0
|
||||||
|
var memory = 0
|
||||||
|
var moxie = 0
|
||||||
|
var presence = 0
|
||||||
|
var reasoning = 0
|
||||||
|
var self_discipline = 0
|
||||||
|
|
||||||
|
func toString() -> String:
|
||||||
|
return("pcText: " + str(pcText) +
|
||||||
|
"; Agility: " + str(agility) +
|
||||||
|
"; Appearance: " + str(appearance) +
|
||||||
|
"; Constitution: " + str(constitution) +
|
||||||
|
"; Quickness: " + str(quickness) +
|
||||||
|
"; Manual_dexterity: " + str(manual_dexterity) +
|
||||||
|
"; Strength: " + str(strength) +
|
||||||
|
"; Chutzpah: " + str(chutzpah) +
|
||||||
|
"; Empathy: " + str(empathy) +
|
||||||
|
"; Intuition: " + str(intuition) +
|
||||||
|
"; Memory: " + str(memory) +
|
||||||
|
"; Moxie: " + str(moxie) +
|
||||||
|
"; Presence: " + str(presence) +
|
||||||
|
"; Reasoning: " + str(reasoning) +
|
||||||
|
"; Self_discipline: " + str(self_discipline)
|
||||||
|
)
|
||||||
|
@ -16,6 +16,41 @@ func _ready() -> void:
|
|||||||
func _on_Button_pressed():
|
func _on_Button_pressed():
|
||||||
$FileDialog.popup()
|
$FileDialog.popup()
|
||||||
|
|
||||||
|
#Import character file
|
||||||
|
func _charSetStat(statname: String, statvalue: int) -> void:
|
||||||
|
if statname in pSingleton.viableCharStats:
|
||||||
|
match statname:
|
||||||
|
"AG":
|
||||||
|
pSingleton.agility = statvalue
|
||||||
|
"APP":
|
||||||
|
pSingleton.appearance = statvalue
|
||||||
|
"CO":
|
||||||
|
pSingleton.constitution = statvalue
|
||||||
|
"QU":
|
||||||
|
pSingleton.quickness = statvalue
|
||||||
|
"MD":
|
||||||
|
pSingleton.manual_dexterity = statvalue
|
||||||
|
"ST":
|
||||||
|
pSingleton.strength = statvalue
|
||||||
|
"CH":
|
||||||
|
pSingleton.chutzpah = statvalue
|
||||||
|
"EM":
|
||||||
|
pSingleton.empathy = statvalue
|
||||||
|
"IN":
|
||||||
|
pSingleton.intuition = statvalue
|
||||||
|
"ME":
|
||||||
|
pSingleton.memory = statvalue
|
||||||
|
"MX":
|
||||||
|
pSingleton.moxie = statvalue
|
||||||
|
"PR":
|
||||||
|
pSingleton.presence = statvalue
|
||||||
|
"RE":
|
||||||
|
pSingleton.reasoning = statvalue
|
||||||
|
"SD":
|
||||||
|
pSingleton.self_discipline = statvalue
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
|
||||||
#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
|
#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):
|
func _on_FileDialog_file_selected(path):
|
||||||
var file = File.new()
|
var file = File.new()
|
||||||
@ -27,6 +62,8 @@ func _on_FileDialog_file_selected(path):
|
|||||||
var csvStrArray = file.get_csv_line()
|
var csvStrArray = file.get_csv_line()
|
||||||
var i = 0
|
var i = 0
|
||||||
var isLabel = true
|
var isLabel = true
|
||||||
|
var row_label = ""
|
||||||
|
var row_value = ""
|
||||||
while i < csvStrArray.size():
|
while i < csvStrArray.size():
|
||||||
var csvStr = csvStrArray[i]
|
var csvStr = csvStrArray[i]
|
||||||
if(isLabel):
|
if(isLabel):
|
||||||
@ -34,10 +71,14 @@ func _on_FileDialog_file_selected(path):
|
|||||||
var textLine = Label.new()
|
var textLine = Label.new()
|
||||||
$ScrollContainer/VBoxContainer.add_child(textLine)
|
$ScrollContainer/VBoxContainer.add_child(textLine)
|
||||||
textLine.text = csvStr.to_upper()
|
textLine.text = csvStr.to_upper()
|
||||||
|
row_label = csvStr.to_upper()
|
||||||
isLabel = false
|
isLabel = false
|
||||||
#DKM TEMP: save this unformatted to the singleton text string
|
#DKM TEMP: save this unformatted to the singleton text string
|
||||||
pSingleton.pcText += csvStr.to_upper() + ": "
|
pSingleton.pcText += csvStr.to_upper() + ": "
|
||||||
else:
|
else:
|
||||||
|
row_value = csvStr
|
||||||
|
if(typeof(int(row_value)) == TYPE_INT):
|
||||||
|
_charSetStat(row_label, int(row_value))
|
||||||
isLabel = true
|
isLabel = true
|
||||||
var textBox = LineEdit.new()
|
var textBox = LineEdit.new()
|
||||||
$ScrollContainer/VBoxContainer.add_child(textBox)
|
$ScrollContainer/VBoxContainer.add_child(textBox)
|
||||||
@ -46,3 +87,6 @@ func _on_FileDialog_file_selected(path):
|
|||||||
pSingleton.pcText += csvStr + "\n"
|
pSingleton.pcText += csvStr + "\n"
|
||||||
i += 1
|
i += 1
|
||||||
file.close()
|
file.close()
|
||||||
|
#DKM TEMP:
|
||||||
|
print("PRINTING set char tostring: ")
|
||||||
|
print(pSingleton.toString())
|
||||||
|
@ -37,9 +37,8 @@ margin_bottom = 480.0
|
|||||||
window_title = "Open a File"
|
window_title = "Open a File"
|
||||||
mode = 0
|
mode = 0
|
||||||
access = 2
|
access = 2
|
||||||
current_dir = "/ProgramData/CS_Working/RPGR/Godot_projects/bcirpg_mergedDemo_20220911A"
|
current_dir = "/ProgramData/CS_Working/RPGR/Godot_projects/bcirpg_mergedMaster_20220918A"
|
||||||
current_file = "_userData/characterFiles"
|
current_path = "/ProgramData/CS_Working/RPGR/Godot_projects/bcirpg_mergedMaster_20220918A/"
|
||||||
current_path = "/ProgramData/CS_Working/RPGR/Godot_projects/bcirpg_mergedDemo_20220911A/_userData/characterFiles"
|
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,6 @@ var rows
|
|||||||
onready var settings = get_node("/root/GlobalSaveInstance").settingsInstance
|
onready var settings = get_node("/root/GlobalSaveInstance").settingsInstance
|
||||||
|
|
||||||
onready var SaveButton = get_node("HBoxContainer/VBoxContainer/SaveButton")
|
onready var SaveButton = get_node("HBoxContainer/VBoxContainer/SaveButton")
|
||||||
|
|
||||||
onready var nameVar = get_node("HBoxContainer/VBoxContainer/LabelName/LineEditName")
|
onready var nameVar = get_node("HBoxContainer/VBoxContainer/LabelName/LineEditName")
|
||||||
onready var profVar = get_node("HBoxContainer/VBoxContainer/LabelProfession/LineEditProf")
|
onready var profVar = get_node("HBoxContainer/VBoxContainer/LabelProfession/LineEditProf")
|
||||||
onready var strengthVar = get_node("HBoxContainer/VBoxContainer/LabelStrength/LineEditStrength")
|
onready var strengthVar = get_node("HBoxContainer/VBoxContainer/LabelStrength/LineEditStrength")
|
||||||
@ -20,38 +19,29 @@ onready var weaponVar = get_node("HBoxContainer/VBoxContainer2/LabelWeapon/LineE
|
|||||||
onready var armorVar = get_node("HBoxContainer/VBoxContainer2/LabelArmor/LineEditArmor")
|
onready var armorVar = get_node("HBoxContainer/VBoxContainer2/LabelArmor/LineEditArmor")
|
||||||
onready var quoteVar = get_node("HBoxContainer/VBoxContainer2/LabelQuote/LineEditQuote")
|
onready var quoteVar = get_node("HBoxContainer/VBoxContainer2/LabelQuote/LineEditQuote")
|
||||||
|
|
||||||
func writeToCSV(nameV, profV, strengthV, intelV, willpowerV, charmV, weaponV, armorV, quoteV):
|
|
||||||
var f = File.new()
|
|
||||||
f.open("res://_userFiles/CharacterOutput.csv", File.WRITE)
|
|
||||||
var ArrayStrings = [PoolStringArray()]
|
|
||||||
|
|
||||||
f.store_csv_line(["Name", nameV])
|
|
||||||
f.store_csv_line(["Profession", profV])
|
|
||||||
f.store_csv_line(["Strength", strengthV])
|
|
||||||
f.store_csv_line(["Intellegence", intelV])
|
|
||||||
f.store_csv_line(["Willpower", willpowerV])
|
|
||||||
f.store_csv_line(["Charm", charmV])
|
|
||||||
f.store_csv_line(["Weapon", weaponV])
|
|
||||||
f.store_csv_line(["Armor", armorV])
|
|
||||||
f.store_csv_line(["Quote", quoteV])
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
if SaveButton.pressed == true:
|
if SaveButton.pressed == true:
|
||||||
$Title/FileDialog.popup()
|
$Title/FileDialog.popup()
|
||||||
|
|
||||||
writeToCSV(nameVar.get_text(), profVar.get_text(),
|
|
||||||
strengthVar.get_text(), intelVar.get_text(), willpowerVar.get_text(),
|
|
||||||
charmVar.get_text(), weaponVar.get_text(), armorVar.get_text(), quoteVar.get_text())
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
theme=load(settings.themeFile)
|
theme=load(settings.themeFile)
|
||||||
|
|
||||||
#DKM TEMP: just text for now from text edit
|
#DKM TEMP: just text for now from text edit
|
||||||
func _on_FileDialog_file_selected(path: String) -> void:
|
func _on_FileDialog_file_selected(path: String) -> void:
|
||||||
var pc = get_node("/root/PlayerCharacter")
|
var pc = get_node("/root/PlayerCharacter")
|
||||||
|
|
||||||
var newCharFile = File.new()
|
var newCharFile = File.new()
|
||||||
newCharFile.open(path, 2)
|
newCharFile.open(path, 2)
|
||||||
newCharFile.store_string($TextEdit.text)
|
var f = File.new()
|
||||||
pc.playerCharacterSingleton.pcText = $TextEdit.text
|
|
||||||
|
f.store_csv_line(["Name", nameVar.get_text()])
|
||||||
|
f.store_csv_line(["Profession", profVar.get_text()])
|
||||||
|
f.store_csv_line(["Strength", strengthVar.get_text()])
|
||||||
|
f.store_csv_line(["Intellegence", intelVar.get_text()])
|
||||||
|
f.store_csv_line(["Willpower", willpowerVar.get_text()])
|
||||||
|
f.store_csv_line(["Charm", charmVar.get_text()])
|
||||||
|
f.store_csv_line(["Weapon", weaponVar.get_text()])
|
||||||
|
f.store_csv_line(["Armor", armorVar.get_text()])
|
||||||
|
f.store_csv_line(["Quote", quoteVar.get_text()])
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
@ -12,9 +12,6 @@ anchor_right = 1.0
|
|||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
theme = ExtResource( 6 )
|
theme = ExtResource( 6 )
|
||||||
script = ExtResource( 2 )
|
script = ExtResource( 2 )
|
||||||
__meta__ = {
|
|
||||||
"_edit_use_anchors_": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="Background" type="Panel" parent="."]
|
[node name="Background" type="Panel" parent="."]
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
|
Loading…
Reference in New Issue
Block a user