add get_card_styling function for export scripts

This commit is contained in:
GenevensiS
2024-09-16 08:59:55 +02:00
parent 4767332060
commit 9b34ae5446
4 changed files with 34 additions and 3 deletions
+17
View File
@@ -0,0 +1,17 @@
Function: get_card_styling
--Usage--
> get_card_styling(card, set: set)
Get the styling data of a [[type:card]].
This is for use in exporter scripts. In card scripts, use the "styling" predefined variable instead.
--Parameters--
! Parameter Type Description
| @input@ [[type:card]] The card you want to retrieve the styling data from.
| @set@ [[type:set]] The set the card belongs to. In an exporter script, this can be ommited since "set" is a predefined variable.
--Examples--
> # Retrieve the value "is foil" from the card's styling options
> card_is_foil := get_card_styling(card)["is_foil"] or else false
+1
View File
@@ -97,6 +97,7 @@ These functions are built into the program, other [[type:function]]s can be defi
! Cards <<<
| [[fun:new_card]] Construct a new [[type:card]] object.
| [[fun:get_card_styling]] Get the styling data of a [[type:card]].
! HTML export <<<
| [[fun:to_html]] Convert [[type:tagged text]] to html.
+13 -1
View File
@@ -662,6 +662,17 @@ SCRIPT_FUNCTION(random_select_many) {
return ret;
}
SCRIPT_FUNCTION(get_card_styling) {
SCRIPT_PARAM_C(ScriptValueP, input);
SCRIPT_PARAM_C(ScriptValueP, set);
ScriptObject<CardP>* c = dynamic_cast<ScriptObject<CardP>*>(input.get());
ScriptObject<Set*>* s = dynamic_cast<ScriptObject<Set*>*>(set.get());
if (s && c) {
return to_script(&s->getValue()->stylingDataFor(c->getValue()));
}
throw ScriptError(_("invalid set or card argument"));
}
// ----------------------------------------------------------------------------- : Keywords
@@ -747,7 +758,8 @@ void init_script_basic_functions(Context& ctx) {
ctx.setVariable(_("to_color"), script_to_color);
ctx.setVariable(_("to_date"), script_to_date);
ctx.setVariable(_("to_code"), script_to_code);
ctx.setVariable(_("type_name"), script_type_name);
ctx.setVariable(_("type_name"), script_type_name);
ctx.setVariable(_("get_card_styling"), script_get_card_styling);
// math
ctx.setVariable(_("abs"), script_abs);
ctx.setVariable(_("random_real"), script_random_real);
@@ -48,7 +48,8 @@ $built_in_functions = array(
'filter_list' =>'',
'random_shuffle' =>'',
'random_select' =>'',
'random_select_many' =>'',
'random_select_many' =>'',
'get_card_styling' =>'',
// keywords
'expand_keywords' =>'', 'expand_keywords_rule'=>'expand_keywords',
'keyword_usage' =>'',
@@ -232,4 +233,4 @@ function highlight_script_string($code) {
return $code;
}
?>
?>