dmolony-DiskBrowser/src/com/bytezone/diskbrowser/wizardry/ExperienceLevel.java

54 lines
1.8 KiB
Java
Executable File

package com.bytezone.diskbrowser.wizardry;
import com.bytezone.diskbrowser.applefile.AbstractFile;
import com.bytezone.diskbrowser.utilities.Utility;
// -----------------------------------------------------------------------------------//
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;
long points = Utility.getShort (buffer, ptr) + Utility.getShort (buffer, ptr + 2) * 10000
+ Utility.getShort (buffer, ptr + 4) * 100000000L;
expLevels[seq++] = points;
}
}
// ---------------------------------------------------------------------------------//
long getExperiencePoints (int level)
// ---------------------------------------------------------------------------------//
{
if (level == 0)
return expLevels[0];
return level < 13 ? expLevels[level - 1] : (level - 13) * expLevels[0] + expLevels[12];
}
// ---------------------------------------------------------------------------------//
@Override
public String getText ()
// ---------------------------------------------------------------------------------//
{
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]));
return line.toString ();
}
}