dmolony-DiskBrowser/src/com/bytezone/diskbrowser/applefile/LodeRunner.java

72 lines
2.5 KiB
Java
Raw Normal View History

2015-06-01 09:35:51 +00:00
package com.bytezone.diskbrowser.applefile;
2016-02-24 21:11:14 +00:00
import com.bytezone.diskbrowser.utilities.HexFormatter;
2015-06-01 09:35:51 +00:00
2019-11-07 03:06:09 +00:00
// -----------------------------------------------------------------------------------//
2015-06-01 09:35:51 +00:00
public class LodeRunner extends AbstractFile
2019-11-07 03:06:09 +00:00
// -----------------------------------------------------------------------------------//
2015-06-01 09:35:51 +00:00
{
2019-11-07 03:06:09 +00:00
private static char[] chars = { ' ', // space
'-', // diggable floor
'=', // undiggable floor
'+', // ladder
'^', // hand over hand bar
'~', // trap door
'#', // hidden ladder
'$', // gold
'*', // enemy
'x' // player
};
// ---------------------------------------------------------------------------------//
2015-06-01 09:35:51 +00:00
public LodeRunner (String name, byte[] buffer)
2019-11-07 03:06:09 +00:00
// ---------------------------------------------------------------------------------//
2015-06-01 09:35:51 +00:00
{
super (name, buffer);
}
2019-11-07 03:06:09 +00:00
// ---------------------------------------------------------------------------------//
2015-06-01 09:35:51 +00:00
@Override
public String getText ()
2019-11-07 03:06:09 +00:00
// ---------------------------------------------------------------------------------//
2015-06-01 09:35:51 +00:00
{
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 ();
}
2019-11-07 03:06:09 +00:00
// ---------------------------------------------------------------------------------//
2015-06-01 09:35:51 +00:00
private StringBuilder addPosition (StringBuilder text, char c)
2019-11-07 03:06:09 +00:00
// ---------------------------------------------------------------------------------//
2015-06-01 09:35:51 +00:00
{
2019-11-07 03:06:09 +00:00
if (c >= 0 && c <= 9)
text.append (chars[c]);
else
text.append (c);
2015-06-01 09:35:51 +00:00
return text;
}
}