Files
2006RebottedClient/src/main/java/net/rebotted/cache/graphics/RSFont.java
T
2019-12-15 20:35:23 -06:00

846 lines
34 KiB
Java

package net.rebotted.cache.graphics;
import java.awt.Color;
import org.rebotted.cache.FileArchive;
import org.rebotted.cache.graphics.GameFont;
import org.rebotted.cache.graphics.Sprite;
import org.rebotted.draw.Rasterizer2D;
import org.rebotted.io.Buffer;
public class RSFont extends Rasterizer2D {
public int baseCharacterHeight = 0;
public int anInt4142;
public int anInt4144;
public int[] characterDrawYOffsets;
public int[] characterHeights;
public int[] characterDrawXOffsets;
public int[] characterWidths;
public int[] iconWidths;
public byte[] aByteArray4151;
public byte[][] fontPixels;
public int[] characterScreenWidths;
public static Sprite[] chatImages;
public static Sprite[] clanImages;
public static String aRSString_4135;
public static String startTransparency;
public static String startDefaultShadow;
public static String endShadow = "/shad";
public static String endEffect;
public static String aRSString_4143;
public static String endStrikethrough = "/str";
public static String aRSString_4147;
public static String startColor;
public static String lineBreak;
public static String startStrikethrough;
public static String endColor;
public static String startImage;
public static String startClanImage;
public static String endUnderline;
public static String defaultStrikethrough;
public static String startShadow;
public static String startEffect;
public static String aRSString_4162;
public static String aRSString_4163;
public static String endTransparency;
public static String aRSString_4165;
public static String startUnderline;
public static String startDefaultUnderline;
public static String aRSString_4169;
public static String[] splitTextStrings;
public static int defaultColor;
public static int textShadowColor;
public static int strikethroughColor;
public static int defaultTransparency;
public static int anInt4175;
public static int underlineColor;
public static int defaultShadow;
public static int anInt4178;
public static int transparency;
public static int textColor;
public RSFont(boolean TypeFont, String s, FileArchive archive) {
fontPixels = new byte[256][];
characterWidths = new int[256];
characterHeights = new int[256];
characterDrawXOffsets = new int[256];
characterDrawYOffsets = new int[256];
characterScreenWidths = new int[256];
Buffer stream = new Buffer(archive.readFile(s + ".dat"));
Buffer stream_1 = new Buffer(archive.readFile("index.dat"));
stream_1.currentPosition = stream.readUShort() + 4;
int k = stream_1.readUnsignedByte();
if (k > 0) {
stream_1.currentPosition += 3 * (k - 1);
}
for (int l = 0; l < 256; l++) {
characterDrawXOffsets[l] = stream_1.readUnsignedByte();
characterDrawYOffsets[l] = stream_1.readUnsignedByte();
int i1 = characterWidths[l] = stream_1.readUShort();
int j1 = characterHeights[l] = stream_1.readUShort();
int k1 = stream_1.readUnsignedByte();
int l1 = i1 * j1;
fontPixels[l] = new byte[l1];
if (k1 == 0) {
for (int i2 = 0; i2 < l1; i2++) {
fontPixels[l][i2] = stream.readSignedByte();
}
} else if (k1 == 1) {
for (int j2 = 0; j2 < i1; j2++) {
for (int l2 = 0; l2 < j1; l2++) {
fontPixels[l][j2 + l2 * i1] = stream.readSignedByte();
}
}
}
if (j1 > baseCharacterHeight && l < 128) {
baseCharacterHeight = j1;
}
characterDrawXOffsets[l] = 1;
characterScreenWidths[l] = i1 + 2;
int k2 = 0;
for (int i3 = j1 / 7; i3 < j1; i3++) {
k2 += fontPixels[l][i3 * i1];
}
if (k2 <= j1 / 7) {
characterScreenWidths[l]--;
characterDrawXOffsets[l] = 0;
}
k2 = 0;
for (int j3 = j1 / 7; j3 < j1; j3++) {
k2 += fontPixels[l][(i1 - 1) + j3 * i1];
}
if (k2 <= j1 / 7) {
characterScreenWidths[l]--;
}
}
if (TypeFont) {
characterScreenWidths[32] = characterScreenWidths[73];
} else {
characterScreenWidths[32] = characterScreenWidths[105];
}
}
public void drawStringMoveY(String string, int drawX, int drawY, int color,
int shadow, int randomMod, int randomMod2) {
if (string != null) {
setColorAndShadow(color, shadow);
double d = 7.0 - (double) randomMod2 / 8.0;
if (d < 0.0) {
d = 0.0;
}
int[] yOffset = new int[string.length()];
for (int index = 0; index < string.length(); index++) {
yOffset[index] = (int) (Math.sin((double) index / 1.5 + (double) randomMod) * d);
}
drawBaseStringMoveXY(string, drawX - getTextWidth(string) / 2, drawY, null, yOffset);
}
}
public int getCharacterWidth(int i) {
return characterScreenWidths[i & 0xff];
}
public void setTrans(int i, int j, int k) {
textShadowColor = defaultShadow = i;
textColor = defaultColor = j;
transparency = defaultTransparency = k;
}
public void drawCenteredString(String s, int i, int j) {
if(s != null)
drawBasicString(s, i - getTextWidth(s) / 2, j);
}
public void setDefaultTextEffectValues(int color, int shadow, int trans) {
strikethroughColor = -1;
underlineColor = -1;
textShadowColor = defaultShadow = shadow;
textColor = defaultColor = color;
transparency = defaultTransparency = trans;
anInt4178 = 0;
anInt4175 = 0;
}
public static int method1014(byte[][] is, byte[][] is_27_, int[] is_28_,
int[] is_29_, int[] is_30_, int i,
int i_31_) {
int i_32_ = is_28_[i];
int i_33_ = i_32_ + is_30_[i];
int i_34_ = is_28_[i_31_];
int i_35_ = i_34_ + is_30_[i_31_];
int i_36_ = i_32_;
if (i_34_ > i_32_) {
i_36_ = i_34_;
}
int i_37_ = i_33_;
if (i_35_ < i_33_) {
i_37_ = i_35_;
}
int i_38_ = is_29_[i];
if (is_29_[i_31_] < i_38_) {
i_38_ = is_29_[i_31_];
}
byte[] is_39_ = is_27_[i];
byte[] is_40_ = is[i_31_];
int i_41_ = i_36_ - i_32_;
int i_42_ = i_36_ - i_34_;
for (int i_43_ = i_36_; i_43_ < i_37_; i_43_++) {
int i_44_ = is_39_[i_41_++] + is_40_[i_42_++];
if (i_44_ < i_38_) {
i_38_ = i_44_;
}
}
return -i_38_;
}
public void drawCenteredStringMoveXY(String string, int drawX, int drawY, int color,
int shadow, int randomMod) {
if (string != null) {
setColorAndShadow(color, shadow);
int[] xMods = new int[string.length()];
int[] yMods = new int[string.length()];
for (int index = 0; index < string.length(); index++) {
xMods[index] = (int) (Math.sin((double) index / 5.0 + (double) randomMod / 5.0) * 5.0);
yMods[index] = (int) (Math.sin((double) index / 3.0 + (double) randomMod / 5.0) * 5.0);
}
drawBaseStringMoveXY(string, drawX - getTextWidth(string) / 2, drawY, xMods,
yMods);
}
}
public void drawCenteredStringMoveY(String class100, int drawX, int drawY, int color,
int shadow, int i_54_) {
if (class100 != null) {
setColorAndShadow(color, shadow);
int[] yOffset = new int[class100.length()];
for (int index = 0; index < class100.length(); index++) {
yOffset[index] = (int) (Math.sin((double) index / 2.0 + (double) i_54_ / 5.0) * 5.0);
}
drawBaseStringMoveXY(class100, drawX - getTextWidth(class100) / 2, drawY, null,
yOffset);
}
}
public static void unpackImages(Sprite[] icons, Sprite[] clan) {
chatImages = icons;
clanImages = clan;
}
public void drawBasicString(String string, int drawX, int drawY) {
drawY -= baseCharacterHeight;
int startIndex = -1;
string = handleOldSyntax(string);
for (int currentCharacter = 0; currentCharacter < string.length(); currentCharacter++) {
int character = string.charAt(currentCharacter);
if (character > 255) {
character = 32;
}
if (character == 60) {
startIndex = currentCharacter;
} else {
if (character == 62 && startIndex != -1) {
String effectString = string.substring(startIndex + 1, currentCharacter);
startIndex = -1;
if (effectString.equals(startEffect)) {
character = 60;
} else if (effectString.equals(endEffect)) {
character = 62;
} else if (effectString.equals(aRSString_4135)) {
character = 160;
} else if (effectString.equals(aRSString_4162)) {
character = 173;
} else if (effectString.equals(aRSString_4165)) {
character = 215;
} else if (effectString.equals(aRSString_4147)) {
character = 128;
} else if (effectString.equals(aRSString_4163)) {
character = 169;
} else if (effectString.equals(aRSString_4169)) {
character = 174;
} else {
if (effectString.startsWith(startImage)) {
try {
int imageId = Integer.valueOf(effectString.substring(4));
Sprite chatImageId = chatImages[imageId];
int iconModY = chatImageId.getMaxHeight();
if (transparency == 256) {
chatImageId.method346(drawX, (drawY + baseCharacterHeight - iconModY));
} else {
chatImageId.drawSprite(drawX,(drawY + baseCharacterHeight - iconModY), transparency);
}
drawX += chatImageId.getMaxWidth();
} catch (Exception exception) {
/* empty */
}
} else if (effectString.startsWith(startClanImage)) {
try {
int imageId = Integer.valueOf(effectString
.substring(5));
Sprite icon = clanImages[imageId];
int iconModY = icon.getMyHeight() + icon.getOffsetY()
+ 1;
if (transparency == 256) {
icon.drawSprite(drawX, (drawY
+ baseCharacterHeight - iconModY));
} else {
icon.drawSprite(drawX, (drawY
+ baseCharacterHeight - iconModY),
transparency);
}
drawX += 11;
} catch (Exception exception) {
exception.printStackTrace();
}
} else {
setTextEffects(effectString);
}
continue;
}
}
if (startIndex == -1) {
int width = characterWidths[character];
int height = characterHeights[character];
if (character != 32) {
if (transparency == 256) {
if (textShadowColor != -1) {
drawCharacter(character,
drawX + characterDrawXOffsets[character] + 1,
drawY + characterDrawYOffsets[character] + 1,
width, height, textShadowColor, true);
}
drawCharacter(character, drawX + characterDrawXOffsets[character],
drawY + characterDrawYOffsets[character], width,
height, textColor, false);
} else {
if (textShadowColor != -1) {
drawTransparentCharacter(character,
drawX + characterDrawXOffsets[character] + 1,
drawY + characterDrawYOffsets[character] + 1,
width, height, textShadowColor, transparency,
true);
}
drawTransparentCharacter(character, drawX + characterDrawXOffsets[character],
drawY + characterDrawYOffsets[character], width,
height, textColor, transparency, false);
}
} else if (anInt4178 > 0) {
anInt4175 += anInt4178;
drawX += anInt4175 >> 8;
anInt4175 &= 0xff;
}
int lineWidth = characterScreenWidths[character];
if (strikethroughColor != -1) {
GameFont.drawHorizontalLine(drawX, drawY + (int) ((double) baseCharacterHeight * 0.69999999999999996D), lineWidth, strikethroughColor);
}
if (underlineColor != -1) {
GameFont.drawHorizontalLine(drawX, drawY + baseCharacterHeight, lineWidth, underlineColor);
}
drawX += lineWidth;
}
}
}
}
public void drawRAString(String string, int drawX, int drawY, int color,
int shadow) {
if (string != null) {
setColorAndShadow(color, shadow);
drawBasicString(string, drawX - getTextWidth(string), drawY);
}
}
public void drawBaseStringMoveXY(String string, int drawX, int drawY, int[] xModifier,
int[] yModifier) {
drawY -= baseCharacterHeight;
int startIndex = -1;
int modifierOffset = 0;
for (int currentCharacter = 0; currentCharacter < string.length(); currentCharacter++) {
int character = string.charAt(currentCharacter);
if (character == 60) {
startIndex = currentCharacter;
} else {
if (character == 62 && startIndex != -1) {
String effectString = string.substring(startIndex + 1, currentCharacter);
startIndex = -1;
if (effectString.equals(startEffect)) {
character = 60;
} else if (effectString.equals(endEffect)) {
character = 62;
} else if (effectString.equals(aRSString_4135)) {
character = 160;
} else if (effectString.equals(aRSString_4162)) {
character = 173;
} else if (effectString.equals(aRSString_4165)) {
character = 215;
} else if (effectString.equals(aRSString_4147)) {
character = 128;
} else if (effectString.equals(aRSString_4163)) {
character = 169;
} else if (effectString.equals(aRSString_4169)) {
character = 174;
} else {
if (effectString.startsWith(startImage)) {
try {
int xModI;
if (xModifier != null) {
xModI = xModifier[modifierOffset];
} else {
xModI = 0;
}
int yMod;
if (yModifier != null) {
yMod = yModifier[modifierOffset];
} else {
yMod = 0;
}
modifierOffset++;
int iconId = Integer.valueOf(effectString.substring(4));
Sprite class92 = chatImages[iconId];
int iconOffsetY = class92.getMaxHeight();
if (transparency == 256) {
class92.drawSprite(drawX + xModI,
(drawY + baseCharacterHeight - iconOffsetY + yMod));
} else {
class92.drawSprite(drawX + xModI,
(drawY + baseCharacterHeight - iconOffsetY + yMod),
transparency);
}
drawX += class92.getMaxWidth();
} catch (Exception exception) {
/* empty */
}
} else {
setTextEffects(effectString);
}
continue;
}
}
if (startIndex == -1) {
int width = characterWidths[character];
int height = characterHeights[character];
int xOff;
if (xModifier != null) {
xOff = xModifier[modifierOffset];
} else {
xOff = 0;
}
int yOff;
if (yModifier != null) {
yOff = yModifier[modifierOffset];
} else {
yOff = 0;
}
modifierOffset++;
if (character != 32) {
if (transparency == 256) {
if (textShadowColor != -1) {
drawCharacter(character,
(drawX + characterDrawXOffsets[character] + 1 + xOff),
(drawY + characterDrawYOffsets[character] + 1 + yOff),
width, height, textShadowColor, true);
}
drawCharacter(character,
drawX + characterDrawXOffsets[character] + xOff,
drawY + characterDrawYOffsets[character] + yOff,
width, height, textColor, false);
} else {
if (textShadowColor != -1) {
drawTransparentCharacter(character,
(drawX + characterDrawXOffsets[character] + 1 + xOff),
(drawY + characterDrawYOffsets[character] + 1 + yOff),
width, height, textShadowColor,
transparency, true);
}
drawTransparentCharacter(character,
drawX + characterDrawXOffsets[character] + xOff,
drawY + characterDrawYOffsets[character] + yOff,
width, height, textColor, transparency,
false);
}
} else if (anInt4178 > 0) {
anInt4175 += anInt4178;
drawX += anInt4175 >> 8;
anInt4175 &= 0xff;
}
int i_109_ = characterScreenWidths[character];
if (strikethroughColor != -1) {
GameFont.drawHorizontalLine(drawX, drawY + (int) ((double) baseCharacterHeight * 0.7), i_109_, strikethroughColor);
}
if (underlineColor != -1) {
GameFont.drawHorizontalLine(drawX, drawY + baseCharacterHeight, i_109_, underlineColor);
}
drawX += i_109_;
}
}
}
}
public void setTextEffects(String string) {
do {
try {
if (string.startsWith(startColor)) {
String color = string.substring(4);
textColor = color.length() < 6 ? Color.decode(color).getRGB() : Integer.parseInt(color, 16);
} else if (string.equals(endColor)) {
textColor = defaultColor;
} else if (string.startsWith(startTransparency)) {
transparency = Integer.valueOf(string.substring(6));
} else if (string.equals(endTransparency)) {
transparency = defaultTransparency;
} else if (string.startsWith(startStrikethrough)) {
strikethroughColor = Integer.valueOf(string.substring(4));
} else if (string.equals(defaultStrikethrough)) {
strikethroughColor = 8388608;
} else if (string.equals(endStrikethrough)) {
strikethroughColor = -1;
} else if (string.startsWith(startUnderline)) {
underlineColor = Integer.valueOf(string.substring(2));
} else if (string.equals(startDefaultUnderline)) {
underlineColor = 0;
} else if (string.equals(endUnderline)) {
underlineColor = -1;
} else if (string.startsWith(startShadow)) {
textShadowColor = Integer.valueOf(string.substring(5));
} else if (string.equals(startDefaultShadow)) {
textShadowColor = 0;
} else if (string.equals(endShadow)) {
textShadowColor = defaultShadow;
} else {
if (!string.equals(lineBreak)) {
break;
}
setDefaultTextEffectValues(defaultColor, defaultShadow, defaultTransparency);
}
} catch (Exception exception) {
break;
}
break;
} while (false);
}
public void setColorAndShadow(int color, int shadow) {
strikethroughColor = -1;
underlineColor = -1;
textShadowColor = defaultShadow = shadow;
textColor = defaultColor = color;
transparency = defaultTransparency = 256;
anInt4178 = 0;
anInt4175 = 0;
}
public int getTextWidth(String string) {
if (string == null) {
return 0;
}
int startIndex = -1;
int finalWidth = 0;
for (int currentCharacter = 0; currentCharacter < string.length(); currentCharacter++) {
int character = string.charAt(currentCharacter);
if (character > 255) {
character = 32;
}
if (character == 60) {
startIndex = currentCharacter;
} else {
if (character == 62 && startIndex != -1) {
String effectString = string.substring(startIndex + 1, currentCharacter);
startIndex = -1;
if (effectString.equals(startEffect)) {
character = 60;
} else if (effectString.equals(endEffect)) {
character = 62;
} else if (effectString.equals(aRSString_4135)) {
character = 160;
} else if (effectString.equals(aRSString_4162)) {
character = 173;
} else if (effectString.equals(aRSString_4165)) {
character = 215;
} else if (effectString.equals(aRSString_4147)) {
character = 128;
} else if (effectString.equals(aRSString_4163)) {
character = 169;
} else if (effectString.equals(aRSString_4169)) {
character = 174;
} else {
if (effectString.startsWith(startImage)) {
try {//<img=
int iconId = Integer.valueOf(effectString.substring(4));
finalWidth += chatImages[iconId].getMaxWidth();
} catch (Exception exception) {
/* empty */
}
}
continue;
}
}
if (startIndex == -1) {
finalWidth += characterScreenWidths[character];
}
}
}
return finalWidth;
}
public void drawBasicString(String string, int drawX, int drawY, int color,
int shadow) {
if (string != null) {
setColorAndShadow(color, shadow);
drawBasicString(string, drawX, drawY);
}
}
public void drawCenteredString(String string, int drawX, int drawY, int color,
int shadow) {
if (string != null) {
setColorAndShadow(color, shadow);
string = handleOldSyntax(string);
drawBasicString(string, drawX - getTextWidth(string) / 2, drawY);
}
}
public static void nullLoader() {
startEffect = null;
endEffect = null;
aRSString_4135 = null;
aRSString_4162 = null;
aRSString_4165 = null;
aRSString_4147 = null;
aRSString_4163 = null;
aRSString_4169 = null;
startImage = null;
lineBreak = null;
startColor = null;
endColor = null;
startTransparency = null;
endTransparency = null;
startUnderline = null;
startDefaultUnderline = null;
endUnderline = null;
startShadow = null;
startDefaultShadow = null;
endShadow = null;
startStrikethrough = null;
defaultStrikethrough = null;
endStrikethrough = null;
aRSString_4143 = null;
splitTextStrings = null;
}
public static void createTransparentCharacterPixels(int[] is, byte[] is_0_, int i, int i_1_,
int i_2_, int i_3_, int i_4_, int i_5_,
int i_6_, int i_7_) {
i = ((i & 0xff00ff) * i_7_ & ~0xff00ff) + ((i & 0xff00) * i_7_ & 0xff0000) >> 8;
i_7_ = 256 - i_7_;
for (int i_8_ = -i_4_; i_8_ < 0; i_8_++) {
for (int i_9_ = -i_3_; i_9_ < 0; i_9_++) {
if (is_0_[i_1_++] != 0) {
int i_10_ = is[i_2_];
is[i_2_++] = ((((i_10_ & 0xff00ff) * i_7_ & ~0xff00ff) + ((i_10_ & 0xff00) * i_7_ & 0xff0000)) >> 8) + i;
} else {
i_2_++;
}
}
i_2_ += i_5_;
i_1_ += i_6_;
}
}
public void drawTransparentCharacter(int i, int i_11_, int i_12_, int i_13_, int i_14_,
int i_15_, int i_16_, boolean bool) {
int i_17_ = i_11_ + i_12_ * Rasterizer2D.width;
int i_18_ = Rasterizer2D.width - i_13_;
int i_19_ = 0;
int i_20_ = 0;
if (i_12_ < Rasterizer2D.topY) {
int i_21_ = Rasterizer2D.topY - i_12_;
i_14_ -= i_21_;
i_12_ = Rasterizer2D.topY;
i_20_ += i_21_ * i_13_;
i_17_ += i_21_ * Rasterizer2D.width;
}
if (i_12_ + i_14_ > Rasterizer2D.bottomY) {
i_14_ -= i_12_ + i_14_ - Rasterizer2D.bottomY;
}
if (i_11_ < Rasterizer2D.leftX) {
int i_22_ = Rasterizer2D.leftX - i_11_;
i_13_ -= i_22_;
i_11_ = Rasterizer2D.leftX;
i_20_ += i_22_;
i_17_ += i_22_;
i_19_ += i_22_;
i_18_ += i_22_;
}
if (i_11_ + i_13_ > Rasterizer2D.bottomX) {
int i_23_ = i_11_ + i_13_ - Rasterizer2D.bottomX;
i_13_ -= i_23_;
i_19_ += i_23_;
i_18_ += i_23_;
}
if (i_13_ > 0 && i_14_ > 0) {
createTransparentCharacterPixels(Rasterizer2D.pixels, fontPixels[i], i_15_ ,i_20_, i_17_, i_13_, i_14_, i_18_, i_19_, i_16_);
}
}
public static void createCharacterPixels(int[] is, byte[] is_24_, int i, int i_25_,
int i_26_, int i_27_, int i_28_, int i_29_,
int i_30_) {
int i_31_ = -(i_27_ >> 2);
i_27_ = -(i_27_ & 0x3);
for (int i_32_ = -i_28_; i_32_ < 0; i_32_++) {
for (int i_33_ = i_31_; i_33_ < 0; i_33_++) {
if (is_24_[i_25_++] != 0) {
is[i_26_++] = i;
} else {
i_26_++;
}
if (is_24_[i_25_++] != 0) {
is[i_26_++] = i;
} else {
i_26_++;
}
if (is_24_[i_25_++] != 0) {
is[i_26_++] = i;
} else {
i_26_++;
}
if (is_24_[i_25_++] != 0) {
is[i_26_++] = i;
} else {
i_26_++;
}
}
for (int i_34_ = i_27_; i_34_ < 0; i_34_++) {
if (is_24_[i_25_++] != 0) {
is[i_26_++] = i;
} else {
i_26_++;
}
}
i_26_ += i_29_;
i_25_ += i_30_;
}
}
public static String handleOldSyntax(String text) {
text = text.replaceAll("@red@", "<col=ff0000>");
text = text.replaceAll("@gre@", "<col=65280>");
text = text.replaceAll("@blu@", "<col=255>");
text = text.replaceAll("@yel@", "<col=ffff00>");
text = text.replaceAll("@cya@", "<col=65535>");
text = text.replaceAll("@mag@", "<col=ff00ff>");
text = text.replaceAll("@whi@", "<col=ffffff>");
text = text.replaceAll("@lre@", "<col=ff9040>");
text = text.replaceAll("@dre@", "<col=800000>");
text = text.replaceAll("@bla@", "<col=0>");
text = text.replaceAll("@or1@", "<col=ffb000>");
text = text.replaceAll("@or2@", "<col=ff7000>");
text = text.replaceAll("@or3@", "<col=ff3000>");
text = text.replaceAll("@gr1@", "<col=c0ff00>");
text = text.replaceAll("@gr2@", "<col=80ff00>");
text = text.replaceAll("@gr3@", "<col=40ff00>");
text = text.replaceAll("@RED@", "<col=ffff00>");
text = text.replaceAll("@GRE@", "<col=65280>");
text = text.replaceAll("@BLU@", "<col=255>");
text = text.replaceAll("@YEL@", "<col=ff0000>");
text = text.replaceAll("@CYA@", "<col=65535>");
text = text.replaceAll("@MAG@", "<col=ff00ff>");
text = text.replaceAll("@WHI@", "<col=ffffff>");
text = text.replaceAll("@LRE@", "<col=ff9040>");
text = text.replaceAll("@DRE@", "<col=800000>");
text = text.replaceAll("@BLA@", "<col=0>");
text = text.replaceAll("@OR1@", "<col=ffb000>");
text = text.replaceAll("@OR2@", "<col=ff7000>");
text = text.replaceAll("@OR3@", "<col=ff3000>");
text = text.replaceAll("@GR1@", "<col=c0ff00>");
text = text.replaceAll("@GR2@", "<col=80ff00>");
text = text.replaceAll("@GR3@", "<col=40ff00>");
text = text.replaceAll("@cr1@", "<img=0>");
text = text.replaceAll("@cr2@", "<img=2>");
text = text.replaceAll("@cr3@", "<img=3>");
text = text.replaceAll("@cr4@", "<img=4>");
text = text.replaceAll("@cr5@", "<img=5>");
text = text.replaceAll("@cr6@", "<img=6>");
return text;
}
public void drawCharacter(int character, int i_35_, int i_36_, int i_37_, int i_38_,
int i_39_, boolean bool) {
int i_40_ = i_35_ + i_36_ * Rasterizer2D.width;
int i_41_ = Rasterizer2D.width - i_37_;
int i_42_ = 0;
int i_43_ = 0;
if (i_36_ < Rasterizer2D.topY) {
int i_44_ = Rasterizer2D.topY - i_36_;
i_38_ -= i_44_;
i_36_ = Rasterizer2D.topY;
i_43_ += i_44_ * i_37_;
i_40_ += i_44_ * Rasterizer2D.width;
}
if (i_36_ + i_38_ > Rasterizer2D.bottomY) {
i_38_ -= i_36_ + i_38_ - Rasterizer2D.bottomY;
}
if (i_35_ < Rasterizer2D.leftX) {
int i_45_ = Rasterizer2D.leftX - i_35_;
i_37_ -= i_45_;
i_35_ = Rasterizer2D.leftX;
i_43_ += i_45_;
i_40_ += i_45_;
i_42_ += i_45_;
i_41_ += i_45_;
}
if (i_35_ + i_37_ > Rasterizer2D.bottomX) {
int i_46_ = i_35_ + i_37_ - Rasterizer2D.bottomX;
i_37_ -= i_46_;
i_42_ += i_46_;
i_41_ += i_46_;
}
if (i_37_ > 0 && i_38_ > 0) {
createCharacterPixels(Rasterizer2D.pixels, fontPixels[character],
i_39_, i_43_, i_40_, i_37_, i_38_, i_41_, i_42_);
}
}
static {
startTransparency = "trans=";
startStrikethrough = "str=";
startDefaultShadow = "shad";
startColor = "col=";
lineBreak = "br";
defaultStrikethrough = "str";
endUnderline = "/u";
startImage = "img=";
startClanImage = "clan=";
startShadow = "shad=";
startUnderline = "u=";
endColor = "/col";
startDefaultUnderline = "u";
endTransparency = "/trans";
aRSString_4143 = Integer.toString(100);
aRSString_4135 = "nbsp";
aRSString_4169 = "reg";
aRSString_4165 = "times";
aRSString_4162 = "shy";
aRSString_4163 = "copy";
endEffect = "gt";
aRSString_4147 = "euro";
startEffect = "lt";
defaultTransparency = 256;
defaultShadow = -1;
anInt4175 = 0;
textShadowColor = -1;
textColor = 0;
defaultColor = 0;
strikethroughColor = -1;
splitTextStrings = new String[100];
underlineColor = -1;
anInt4178 = 0;
transparency = 256;
}
}