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,4 +1,4 @@
extends Object
extends Node
#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.
@ -6,43 +6,17 @@ extends Object
# Luke, 12/10/2023, Godot 3.5+
var Name: String
var Attribute: Array
var Cost: int
var Damage: int
var LevelRequirement: int
var Duration: float
var AffectedAttribute: String
var DiceRules: Vector3
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})"
func create_ability(AbilityName: String, Attribute: Array, Cost: int, Damage: int,
LevelRequirement: int, Duration: float, AffectedAttribute: String,
DiceRules: Vector3) -> Dictionary:
var data = {
"AbilityName": AbilityName,
"Attribute": Attribute,
"Cost": Cost,
"Damage": Damage,
"LevelRequirement": LevelRequirement,
"Duration": Duration,
"AffectedAttribute": AffectedAttribute,
"DiceRules": DiceRules,
}
return data

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 )