Refactored Special Abilities Object to be used as a middleware function for UI and other classes

This commit is contained in:
PersonGuyGit 2023-12-17 12:34:25 -07:00
parent c46852df5e
commit 6ac064d16d
4 changed files with 34 additions and 49 deletions

View File

@ -1,48 +1,22 @@
extends Object extends Node
#This class, is used to define special ability data. Such as for attacks like shooting fireballs. #This class, is used to define special ability data. Such as for attacks like shooting fireballs.
#This is the middle ware, to define the structure of the data, before it is accesable by the character sheet. #This is the middle ware, to define the structure of the data, before it is accesable by the character sheet.
#This class is also used to define the structure, as to make it normalized for the database / XML layers. #This class is also used to define the structure, as to make it normalized for the database / XML layers.
# Luke, 12/10/2023, Godot 3.5+ # Luke, 12/10/2023, Godot 3.5+
var Name: String
var Attribute: Array func create_ability(AbilityName: String, Attribute: Array, Cost: int, Damage: int,
LevelRequirement: int, Duration: float, AffectedAttribute: String,
var Cost: int DiceRules: Vector3) -> Dictionary:
var data = {
var Damage: int "AbilityName": AbilityName,
"Attribute": Attribute,
var LevelRequirement: int "Cost": Cost,
"Damage": Damage,
var Duration: float "LevelRequirement": LevelRequirement,
"Duration": Duration,
var AffectedAttribute: String "AffectedAttribute": AffectedAttribute,
"DiceRules": DiceRules,
var DiceRules: Vector3 }
return data
func _init(initName: String, initAttribute: Array, initCost: int, initDamage: int,
initLevelRequirement: int, initDuration: float, initAffectedAttribute: String,
initDiceRules: Vector3):
Name = initName
# Attribute = initAttribute
Cost = initCost
Damage = initDamage
LevelRequirement = initLevelRequirement
Duration = initDuration
AffectedAttribute = initAffectedAttribute
DiceRules = initDiceRules
Attribute = []
for element in initAttribute:
if typeof(element) == TYPE_STRING:
Attribute.append(element)
else:
print("Warning: Ignoring non-string element in StringArray.")
# Custom method to convert the object to a string
func to_string() -> String:
return "SpecialAbility(Name: {Name}, Attribute: {Attribute}, Cost: {Cost}, Damage: {Damage}, LevelRequirement: {LevelRequirement}, Duration: {Duration}, AffectedAttribute: {AffectedAttribute}, DiceRules: {DiceRules})"

View File

@ -1,8 +0,0 @@
extends Node
func _ready():
var SpecialAbility = preload("res://middleware/specialabliities/SpecialAbility.gd")
var special_ability = SpecialAbility.new("Fireball", ["Fire Type", "Projectile"], 1, 10, 0, 5.0, "strength", Vector3(1, 1, 1))
print(special_ability.to_string())

View File

@ -0,0 +1,13 @@
extends Node
func _ready():
print(SpecialAbility.create_ability("Fireball",
["Fire Type", "Projectile"],
1,
10,
5,
3.0,
"strength",
Vector3(1, 2, 3)
))

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://screens/TestScreen/test_scene.gd" type="Script" id=1]
[node name="Node2D" type="Node2D"]
script = ExtResource( 1 )