scr_StringUsing( String, Real );
Codice: Seleziona tutto
///scr_StringUsing ( String, Real );
/// String = stringa con marcatori ( # per la parte intera, % per la parte decimale )
/// Real = valore numerico con quantità di posizioni intere non superiori alla quantità di marcatori #
var format=argument0, intPart=string(floor(argument1)); //
var formLen=string_length(format), intField=string_count("#",format), decField=string_count("%",format); //
var decPart=string_delete(string_format(argument1-floor(argument1),0,decField),1,2); // Dichiarazione variabili
var intLen=string_length(intPart); //
var check=0, using="", char=""; //
check=intField-intLen; // Calcolo posizioni dispinibili
if (check>-1) // Controllo posizioni disponibili
{
intPart=string_repeat("0",check)+intPart; // ottimizzazione posizioni vuoti
repeat(formLen) // inizio ciclo di analisi
{
char=string_char_at(format,1); // lettura primo carattere disponibile dalla coda 'formato'
format=string_delete(format,1,1); // la coda 'formato' viene decurtata
if (char="#") // analisi posizione parte intera
{
using+=string_char_at(intPart,1); // inserimento valori nella posizione intera
intPart=string_delete(intPart,1,1); // la coda 'parte intera' viene decurtata
} else {
if (char="%") // analisi posizione parte decimale
{
using+=string_char_at(decPart,1); // inserimento valori nella posizione decimale
decPart=string_delete(decPart,1,1); // la coda 'parte decimaleì viene decurtata
} else { // nessuna posizione utile trovata
using+=char; // inserimento carattere raw
}
}
}
} else { // Se non ci sono posizioni disponibili
using=string_replace_all(format,"#","*"); // l'output viene settato con asterischi
using=string_replace_all(using,"%","*"); // per la parte intera e per la decimale
}
return using; // ritorno al codice con output string
Entrambi gli argomento sono necessarii ed, in particolare, il primo deve essere formattato con dei marcatori posizionali.
In particolare:
# per indicare le posizioni che la cifre della parte intera possono occupare.
% per indicare le posizioni che le cifre della parte decimale possono occupare.
Per esempio:
scr_StringUsing( "Esempio: ###.%%", 123.45 );
restituirà:
"Esempio: 123.45"
potete aumentare la precisione della parte decimale:
scr_StringUsing( "Esempio: ###.%%%%", 123.45 );
in output:
"Esempio: 123.4500"
potete aumentare anche le posizioni della parte intera:
scr_StringUsing( "Esempio: ######.%%%%", 123.45 );
"Esempio: 000123.4500"
aggiungere separatori per le centinaia:
scr_StringUsing( "Score: ###,###,###.%%", 123456789.10 );
"Score: 123,456,789.10" (Cookie Clicker Style)
Etc. Etc.
Non importa come formattate la stringa: potete mettere i marcatori ovunque purchè soddisfino il numero di cifre recate dal secondo argomento.
scr_StringUsing( "Key Code: ## ## ## ## ##", 1234554321 );
"Key Code: 12 34 55 43 21"
scr_StringUsing( "#,###,###,### Highscore", 1234554321 );
"1,234,554,321 Highscore" (questo è il formato che adopero per i punteggi nel gioco a cui sto lavorando)
E' tutto.
(troppo lungo, spiacente...)
Spero vi sia utile.