mirror of
https://github.com/dmolony/DiskBrowser.git
synced 2024-11-16 19:08:49 +00:00
72 lines
2.5 KiB
Java
72 lines
2.5 KiB
Java
package com.bytezone.diskbrowser.applefile;
|
|
|
|
import com.bytezone.diskbrowser.utilities.HexFormatter;
|
|
|
|
// -----------------------------------------------------------------------------------//
|
|
public class LodeRunner extends AbstractFile
|
|
// -----------------------------------------------------------------------------------//
|
|
{
|
|
private static char[] chars = { ' ', // space
|
|
'-', // diggable floor
|
|
'=', // undiggable floor
|
|
'+', // ladder
|
|
'^', // hand over hand bar
|
|
'~', // trap door
|
|
'#', // hidden ladder
|
|
'$', // gold
|
|
'*', // enemy
|
|
'x' // player
|
|
};
|
|
|
|
// ---------------------------------------------------------------------------------//
|
|
public LodeRunner (String name, byte[] buffer)
|
|
// ---------------------------------------------------------------------------------//
|
|
{
|
|
super (name, buffer);
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------------//
|
|
@Override
|
|
public String getText ()
|
|
// ---------------------------------------------------------------------------------//
|
|
{
|
|
StringBuilder text = new StringBuilder ();
|
|
text.append ("Lode Runner Level\n\n");
|
|
|
|
for (int level = 0; level < 150; level++)
|
|
{
|
|
int ptr = level * 256 + 226;
|
|
String levelName = "";
|
|
if (buffer[ptr] != 0 && buffer[ptr] != (byte) 0xFF)
|
|
levelName = HexFormatter.sanitiseString (buffer, ptr, 15);
|
|
text.append (String.format ("Level %d %s%n%n", level + 1, levelName));
|
|
|
|
ptr = 0;
|
|
for (int i = level * 256, max = i + 224; i < max; i++)
|
|
{
|
|
String val = String.format ("%02X", buffer[i]);
|
|
text = addPosition (text, val.charAt (0));
|
|
text.append (' ');
|
|
text = addPosition (text, val.charAt (1));
|
|
text.append (' ');
|
|
if (++ptr % 14 == 0)
|
|
text.append ("\n");
|
|
}
|
|
text.append ("\n\n");
|
|
}
|
|
|
|
return text.toString ();
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------------//
|
|
private StringBuilder addPosition (StringBuilder text, char c)
|
|
// ---------------------------------------------------------------------------------//
|
|
{
|
|
if (c >= 0 && c <= 9)
|
|
text.append (chars[c]);
|
|
else
|
|
text.append (c);
|
|
|
|
return text;
|
|
}
|
|
} |