mirror of
https://github.com/RPG-Research/bcirpg.git
synced 2024-04-16 14:23:01 +00:00
Refactored Special Abilities Object to be used as a middleware function for UI and other classes
This commit is contained in:
parent
c46852df5e
commit
6ac064d16d
@ -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})"
|
|
||||||
|
@ -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())
|
|
13
Phase2/Godot_Toolset/Main/screens/TestScreen/test_scene.gd
Normal file
13
Phase2/Godot_Toolset/Main/screens/TestScreen/test_scene.gd
Normal 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)
|
||||||
|
))
|
@ -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 )
|
Loading…
Reference in New Issue
Block a user