2025-06-19 17:22:25 +00:00
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using Godot;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-05-22 12:25:02 +00:00
|
|
|
using Rokojori.Extensions;
|
2025-06-19 17:22:25 +00:00
|
|
|
namespace Rokojori
|
|
|
|
|
{
|
|
|
|
|
public class IDGenerator
|
|
|
|
|
{
|
|
|
|
|
static readonly string DefaultID_CharacterSet =
|
|
|
|
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
|
|
|
|
|
|
|
|
static readonly int DefaultID_NumCharacters = 16;
|
|
|
|
|
|
|
|
|
|
protected string characterSet = IDGenerator.DefaultID_CharacterSet;
|
|
|
|
|
protected int numCharacters = DefaultID_NumCharacters;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public IDGenerator set( string characterSet, int numCharacters )
|
|
|
|
|
{
|
|
|
|
|
this.characterSet = characterSet;
|
|
|
|
|
this.numCharacters = numCharacters;
|
|
|
|
|
|
|
|
|
|
return this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string GenerateID( RandomEngine randomEngine = null )
|
|
|
|
|
{
|
|
|
|
|
var id = "";
|
|
|
|
|
randomEngine = RandomEngine.CreateIfNull( randomEngine );
|
|
|
|
|
|
|
|
|
|
for ( var i = 0; i < DefaultID_NumCharacters; i++ )
|
|
|
|
|
{
|
2026-05-22 12:25:02 +00:00
|
|
|
var randomCharacter = randomEngine.FromText( DefaultID_CharacterSet );
|
|
|
|
|
id += randomCharacter;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return id;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string GenerateIDWith( int characters, RandomEngine randomEngine = null )
|
|
|
|
|
{
|
|
|
|
|
var id = "";
|
|
|
|
|
randomEngine = RandomEngine.CreateIfNull( randomEngine );
|
|
|
|
|
|
|
|
|
|
for ( var i = 0; i < characters; i++ )
|
|
|
|
|
{
|
|
|
|
|
var randomCharacter = randomEngine.FromText( DefaultID_CharacterSet );
|
2025-06-19 17:22:25 +00:00
|
|
|
id += randomCharacter;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return id;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string generate( RandomEngine randomEngine = null )
|
|
|
|
|
{
|
|
|
|
|
var id = new StringBuilder();
|
|
|
|
|
randomEngine = RandomEngine.CreateIfNull( randomEngine );
|
|
|
|
|
|
|
|
|
|
for ( var i = 0; i < numCharacters; i++ )
|
|
|
|
|
{
|
2026-05-22 12:25:02 +00:00
|
|
|
var randomCharacter = randomEngine.FromText( characterSet );
|
2025-06-19 17:22:25 +00:00
|
|
|
id.Append( randomCharacter );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return id.ToString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|