2020-02-11 07:29:55 +00:00
|
|
|
package com.bytezone.diskbrowser.wizardry;
|
|
|
|
|
|
|
|
import com.bytezone.diskbrowser.applefile.AbstractFile;
|
2020-06-26 03:29:46 +00:00
|
|
|
import com.bytezone.diskbrowser.utilities.Utility;
|
2020-02-11 07:29:55 +00:00
|
|
|
|
|
|
|
// -----------------------------------------------------------------------------------//
|
|
|
|
class ExperienceLevel extends AbstractFile
|
|
|
|
// -----------------------------------------------------------------------------------//
|
|
|
|
{
|
|
|
|
private final long[] expLevels = new long[13];
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------------//
|
|
|
|
ExperienceLevel (String name, byte[] buffer)
|
|
|
|
// ---------------------------------------------------------------------------------//
|
|
|
|
{
|
|
|
|
super (name, buffer);
|
|
|
|
|
|
|
|
int seq = 0;
|
|
|
|
|
|
|
|
for (int ptr = 0; ptr < buffer.length; ptr += 6)
|
|
|
|
{
|
|
|
|
if (buffer[ptr] == 0)
|
|
|
|
break;
|
|
|
|
|
2022-03-13 22:46:56 +00:00
|
|
|
long points = Utility.getShort (buffer, ptr) + Utility.getShort (buffer, ptr + 2) * 10000
|
|
|
|
+ Utility.getShort (buffer, ptr + 4) * 100000000L;
|
2020-02-11 07:29:55 +00:00
|
|
|
expLevels[seq++] = points;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------------//
|
|
|
|
long getExperiencePoints (int level)
|
|
|
|
// ---------------------------------------------------------------------------------//
|
|
|
|
{
|
2022-03-26 08:07:17 +00:00
|
|
|
if (level == 0)
|
|
|
|
return expLevels[0];
|
2022-03-13 22:46:56 +00:00
|
|
|
return level < 13 ? expLevels[level - 1] : (level - 13) * expLevels[0] + expLevels[12];
|
2020-02-11 07:29:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------------//
|
|
|
|
@Override
|
|
|
|
public String getText ()
|
|
|
|
// ---------------------------------------------------------------------------------//
|
|
|
|
{
|
2022-03-13 22:46:56 +00:00
|
|
|
StringBuilder line = new StringBuilder (name + "\n\nLevel Points Needed\n");
|
|
|
|
|
|
|
|
for (int i = 2; i <= 26; i++)
|
|
|
|
line.append (String.format (" %2d %,13d%n", i, getExperiencePoints (i)));
|
|
|
|
|
|
|
|
line.append (String.format ("%n %,13d+", expLevels[0]));
|
|
|
|
|
2020-02-11 07:29:55 +00:00
|
|
|
return line.toString ();
|
|
|
|
}
|
2015-06-01 09:35:51 +00:00
|
|
|
}
|