Skip to content
Home
Post Code
Jass (Warcraft III)
Wurst
GUI (Warcraft III)
Galaxy (StarCraft II)
GUI (StarCraft II)
C++
Java
Delphi
Text
Search Code
Compare Code
Uploads
Draw
Create New Drawing
View Drawings
Graph
Log in
<pre class="jasscode"><span class="style_keyword">package</span> CustomObjectIdGenerator <span class="style_type">int</span> <span class="style_keyword">array</span> id <span class="style_keyword">constant</span> heroPrefix <span class="style_symbol">=</span> <span class="style_int">'W'</span> <span class="style_keyword">constant</span> nonheroPrefix <span class="style_symbol">=</span> <span class="style_int">'%'</span> <span class="style_type">boolean</span> helperActivator <span class="style_symbol">=</span> initHelper<span class="style_symbol">(</span><span class="style_symbol">)</span> <span class="style_keyword">function</span> initHelper<span class="style_symbol">(</span><span class="style_symbol">)</span> <span class="style_keyword">returns</span> <span class="style_type">boolean</span> <span class="style_keyword">for</span> <span class="style_type">int</span> i <span class="style_symbol">=</span> <span class="style_int">0</span> <span class="style_keyword">to</span> <span class="style_int">2</span> id<span class="style_symbol">[</span>i<span class="style_symbol">]</span> <span class="style_symbol">=</span> <span class="style_int">'0'</span> <span class="style_keyword">return</span> <span class="style_constant">true</span> <span class="style_keyword">function</span> nextValid<span class="style_symbol">(</span><span class="style_type">int</span> c<span class="style_symbol">)</span> <span class="style_keyword">returns</span> <span class="style_type">int</span> <span class="style_type">int</span> r <span class="style_symbol">=</span> c <span class="style_symbol">+</span> <span class="style_int">1</span> <span class="style_keyword">if</span> r <span class="style_symbol">=</span><span class="style_symbol">=</span> <span class="style_int">'_'</span> <span class="style_keyword">or</span> r <span class="style_symbol">=</span><span class="style_symbol">=</span> '<span class="style_symbol">,</span>'or r <span class="style_symbol">=</span><span class="style_symbol">=</span> '<span class="style_string">"'or r == '\' or r == '-'</span> <span class="style_string"> r++</span> <span class="style_string"> if r == '_' or r == ','or r == '"</span>'or r <span class="style_symbol">=</span><span class="style_symbol">=</span> <span class="style_int">'\'</span> <span class="style_keyword">or</span> r <span class="style_symbol">=</span><span class="style_symbol">=</span> '<span class="style_symbol">-</span>' r<span class="style_symbol">+</span><span class="style_symbol">+</span> <span class="style_keyword">return</span> r <span class="style_keyword">function</span> fourChar<span class="style_symbol">(</span><span class="style_type">int</span> a<span class="style_symbol">,</span> <span class="style_type">int</span> b<span class="style_symbol">,</span> <span class="style_type">int</span> c<span class="style_symbol">,</span> <span class="style_type">int</span> d<span class="style_symbol">)</span> <span class="style_keyword">returns</span> <span class="style_type">int</span> <span class="style_keyword">return</span> <span class="style_symbol">(</span><span class="style_symbol">(</span><span class="style_symbol">(</span><span class="style_symbol">(</span><span class="style_symbol">(</span>a<span class="style_symbol">*</span><span class="style_int">256</span><span class="style_symbol">)</span> <span class="style_symbol">+</span> b<span class="style_symbol">)</span><span class="style_symbol">*</span><span class="style_int">256</span><span class="style_symbol">)</span><span class="style_symbol">+</span>c<span class="style_symbol">)</span><span class="style_symbol">*</span><span class="style_int">256</span><span class="style_symbol">)</span><span class="style_symbol">+</span>d <span class="style_keyword">function</span> newId<span class="style_symbol">(</span><span class="style_type">int</span> prefix<span class="style_symbol">)</span> <span class="style_keyword">returns</span> <span class="style_type">int</span> <span class="style_keyword">if</span> helperActivator <span class="style_keyword">for</span> i <span class="style_symbol">=</span> <span class="style_int">0</span> <span class="style_keyword">to</span> <span class="style_int">2</span> <span class="style_keyword">if</span> id<span class="style_symbol">[</span>i<span class="style_symbol">]</span> < <span class="style_int">'~'</span> id<span class="style_symbol">[</span>i<span class="style_symbol">]</span> <span class="style_symbol">=</span> nextValid<span class="style_symbol">(</span>id<span class="style_symbol">[</span>i<span class="style_symbol">]</span><span class="style_symbol">)</span> <span class="style_keyword">for</span> j <span class="style_symbol">=</span> <span class="style_int">0</span> <span class="style_keyword">to</span> i<span class="style_symbol">-</span><span class="style_int">1</span> id<span class="style_symbol">[</span>j<span class="style_symbol">]</span> <span class="style_symbol">=</span> '<span class="style_symbol">!</span>' <span class="style_keyword">return</span> fourChar<span class="style_symbol">(</span>prefix<span class="style_symbol">,</span> id<span class="style_symbol">[</span><span class="style_int">2</span><span class="style_symbol">]</span><span class="style_symbol">,</span> id<span class="style_symbol">[</span><span class="style_int">1</span><span class="style_symbol">]</span><span class="style_symbol">,</span> id<span class="style_symbol">[</span><span class="style_int">0</span><span class="style_symbol">]</span><span class="style_symbol">)</span> error<span class="style_symbol">(</span><span class="style_string">"No vaild id left"</span><span class="style_symbol">)</span> <span class="style_keyword">return</span> <span class="style_int">0</span> <span class="style_keyword">public</span> <span class="style_keyword">function</span> genId<span class="style_symbol">(</span><span class="style_symbol">)</span> <span class="style_keyword">returns</span> <span class="style_type">int</span> <span class="style_keyword">return</span> newId<span class="style_symbol">(</span>nonheroPrefix<span class="style_symbol">)</span> <span class="style_keyword">public</span> <span class="style_keyword">function</span> genHeroId<span class="style_symbol">(</span><span class="style_symbol">)</span> <span class="style_keyword">returns</span> <span class="style_type">int</span> <span class="style_keyword">return</span> newId<span class="style_symbol">(</span>heroPrefix<span class="style_symbol">)</span> </pre>
select language
jass
java
delphi
C++
php
GSL
galaxy
visualBasic
> wurst
Text
Markdown
select style
default
bbcode - default
Jasscraft
> jasscraft html
visual
lightweight
lightweightNr
goto line:
Compare with:
text copy window
edit this code
post new code
package CustomObjectIdGenerator int array id constant heroPrefix = 'W' constant nonheroPrefix = '%' boolean helperActivator = initHelper() function initHelper() returns boolean for int i = 0 to 2 id[i] = '0' return true function nextValid(int c) returns int int r = c + 1 if r == '_' or r == ','or r == '"'or r == '\' or r == '-' r++ if r == '_' or r == ','or r == '"'or r == '\' or r == '-' r++ return r function fourChar(int a, int b, int c, int d) returns int return (((((a*256) + b)*256)+c)*256)+d function newId(int prefix) returns int if helperActivator for i = 0 to 2 if id[i] < '~' id[i] = nextValid(id[i]) for j = 0 to i-1 id[j] = '!' return fourChar(prefix, id[2], id[1], id[0]) error("No vaild id left") return 0 public function genId() returns int return newId(nonheroPrefix) public function genHeroId() returns int return newId(heroPrefix)