158 lines
3.8 KiB
Plaintext
158 lines
3.8 KiB
Plaintext
objectdef CastStackAbility
|
|
{
|
|
variable string Name
|
|
variable string AbilityTarget
|
|
variable string AbilityType
|
|
variable int Percentage
|
|
variable string Tag
|
|
|
|
method Initialize(jsonvalueref jo)
|
|
{
|
|
This:FromJSON[jo]
|
|
}
|
|
|
|
method FromJSON(jsonvalueref jo)
|
|
{
|
|
Name:Set["${jo.Get[Name]~}"]
|
|
AbilityTarget:Set["${jo.Get[AbilityTarget]~}"]
|
|
AbilityType:Set["${jo.Get[AbilityType]~}"]
|
|
Percentage:Set[${jo.Get[Percentage]~}]
|
|
; Tag:Set["${jo.Get[Tag]~}"]
|
|
}
|
|
|
|
member:jsonvalueref AsJSON()
|
|
{
|
|
variable jsonvalue jo="{}"
|
|
jo:SetString[Name, "${Name~}"]
|
|
jo:SetString[AbilityTarget, "${AbilityTarget~}"]
|
|
jo:SetString[AbilityType, "${AbilityType~}"]
|
|
jo:SetString[Percentage, ${Percentage~}]
|
|
jo:SetString[Tag, "${Tag~}"]
|
|
|
|
return jo
|
|
}
|
|
}
|
|
|
|
objectdef CastStackContainer
|
|
{
|
|
variable index:CastStackAbility Abilities
|
|
|
|
method AddAbilityFromJSON(jsonvalueref jo)
|
|
{
|
|
if !${jo.Type.Equal[object]}
|
|
{
|
|
return FALSE
|
|
}
|
|
Abilities:Insert[jo]
|
|
}
|
|
|
|
member:jsonvalueref AsJSON()
|
|
{
|
|
variable jsonvalue jo="[]"
|
|
variable iterator abilityIterator
|
|
Abilities:GetIterator[abilityIterator]
|
|
|
|
if ${abilityIterator:First(exists)}
|
|
{
|
|
do
|
|
{
|
|
|
|
jo:Add["${abilityIterator.Value.AsJSON~}"]
|
|
}
|
|
while ${abilityIterator:Next(exists)}
|
|
}
|
|
|
|
return jo
|
|
}
|
|
}
|
|
|
|
objectdef Profile
|
|
{
|
|
variable string Name
|
|
variable jsonvalue Settings = "{}"
|
|
variable jsonvalue Setup
|
|
variable jsonvalue Aliases
|
|
variable CastStackContainer CastStack
|
|
|
|
method Initialize(jsonvalueref jo)
|
|
{
|
|
This:FromJSON[jo]
|
|
}
|
|
|
|
member:bool GetSettingValue(string key)
|
|
{
|
|
echo "Profile.GetSettingValue[${key}]"
|
|
return ${This.Settings.Get["${key}"]}
|
|
}
|
|
|
|
method FromJSON(jsonvalueref jo)
|
|
{
|
|
Name:Set["${jo.Get["Name"]~}"]
|
|
Settings:SetValue["${jo.Get["Settings"]~}"]
|
|
Setup:SetValue["${jo.Get["Setup"]~}"]
|
|
Aliases:SetValue["${jo.Get["Aliases"]~}"]
|
|
jo.Get["CastStack"]:ForEach["CastStack:AddAbilityFromJSON[ForEach.Value]"]
|
|
|
|
}
|
|
|
|
member:jsonvalueref AsJSON()
|
|
{
|
|
variable jsonvalue jo="{}"
|
|
jo:Set["Name", "${This.Name.AsJSON~}"]
|
|
jo:Set["Settings", "${Settings.AsJSON~}"]
|
|
jo:Set["Setup", "${Setup.AsJSON~}"]
|
|
jo:Set["Aliases", "${Aliases.AsJSON~}"]
|
|
jo:Set["CastStack", "${CastStack.AsJSON~}"]
|
|
|
|
return jo
|
|
}
|
|
}
|
|
|
|
objectdef BotSettings
|
|
{
|
|
variable string DefaultProfile
|
|
variable collection:Profile Profiles
|
|
|
|
method FromFile(string filename)
|
|
{
|
|
variable jsonvalue settingsJson
|
|
variable BotSettings settings
|
|
settingsJson:ParseFile["${filename}"]
|
|
|
|
This:FromJSON[settingsJson]
|
|
}
|
|
|
|
member:bool IsSettingChecked(string key)
|
|
{
|
|
echo "BotSettings.IsSettingChecked[${key}]"
|
|
return ${This.CurrentProfile.GetSettingValue["${key}"].Equal[TRUE]}
|
|
}
|
|
|
|
method FromJSON(jsonvalueref jo)
|
|
{
|
|
DefaultProfile:Set[${jo.Get["DefaultProfile"]}]
|
|
variable jsoniterator profileIterator
|
|
jo.Get["Profiles"]:GetIterator[profileIterator]
|
|
if ${profileIterator:First(exists)}
|
|
{
|
|
do
|
|
{
|
|
Profiles:Set[${profileIterator.Key}, profileIterator.Value]
|
|
}
|
|
while ${profileIterator:Next(exists)}
|
|
}
|
|
}
|
|
|
|
member:jsonvalueref AsJSON()
|
|
{
|
|
variable jsonvalue jo="{}"
|
|
jo:Set[DefaultProfile, "${DefaultProfile.AsJSON~}"]
|
|
jo:Set[Profiles, "${Profiles.AsJSON~}"]
|
|
return jo
|
|
}
|
|
|
|
member:weakref CurrentProfile()
|
|
{
|
|
return Profiles.Element["${This.DefaultProfile}"]
|
|
}
|
|
} |