add new_uid script function

This commit is contained in:
GenevensiS
2026-05-09 18:10:59 +02:00
parent d4efc5b973
commit d79e8afb56
3 changed files with 24 additions and 1 deletions
+1
View File
@@ -109,6 +109,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:new_uid]] Construct a new uid.
| [[fun:add_card_to_set]] Add a [[type:card]] to a [[type:set]].
| [[fun:get_card_styling]] Get the styling data of a [[type:card]].
| [[fun:get_card_stylesheet]] Get the stylesheet of a [[type:card]].
+10
View File
@@ -0,0 +1,10 @@
Function: new_uid
--Usage--
> new_uid()
Returns a new card uid, a string of 32 random digits, which is guaranteed to not exist in the set.
--Parameters--
! Parameter Type Description
| @set@ [[type:set]] The set in which to look for uid conflicts. This can be omitted since 'set' is a predefined variable.
+13 -1
View File
@@ -19,10 +19,11 @@
#include <data/game.hpp>
#include <data/stylesheet.hpp>
#include <data/card.hpp>
#include <util/uid.hpp>
#include <util/error.hpp>
// ----------------------------------------------------------------------------- : new_card
SCRIPT_FUNCTION(new_card) {
SCRIPT_PARAM(GameP, game);
SCRIPT_OPTIONAL_PARAM_(bool, ignore_field_not_found);
@@ -166,11 +167,22 @@ SCRIPT_FUNCTION(add_card_to_set) {
}
}
SCRIPT_RETURN(false);
}
SCRIPT_FUNCTION(new_uid) {
SCRIPT_PARAM_C(Set*, set);
String uid = generate_uid();
for (int i = 0; i < 100; i++) {
if (set->card_uids.find(uid) == set->card_uids.end()) break;
uid = generate_uid();
}
SCRIPT_RETURN(uid);
}
// ----------------------------------------------------------------------------- : Init
void init_script_construction_functions(Context& ctx) {
ctx.setVariable(_("new_card"), script_new_card);
ctx.setVariable(_("new_uid"), script_new_uid);
ctx.setVariable(_("add_card_to_set"), script_add_card_to_set);
}