rokojori_action_library/Runtime/Random/IDGenerator.cs

75 lines
1.8 KiB
C#
Raw Normal View History

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();
}
}
}