Remove LittleEndianWriter class hierarchy

This commit is contained in:
P0nk
2021-08-22 21:08:40 +02:00
parent b3d422a6c5
commit ffc0f3bc97
6 changed files with 3 additions and 469 deletions

View File

@@ -2127,9 +2127,9 @@ public class PacketCreator {
}
/**
* Adds a announcement box to an existing MaplePacketLittleEndianWriter.
* Adds an announcement box to an existing OutPacket.
*
* @param p The MaplePacketLittleEndianWriter to add an announcement box
* @param p The OutPacket to add an announcement box
* to.
* @param shop The shop to announce.
*/
@@ -5844,7 +5844,7 @@ public class PacketCreator {
boolean hasOtherJunior = false;
int entryCount = 2; //2 guaranteed, leader and self
entryCount += Math.min(2, entry.getTotalSeniors());
//needed since MaplePacketLittleEndianWriter doesn't have any seek functionality
//needed since OutPacket doesn't have any seek functionality
if (entry.getSenior() != null) {
if (entry.getSenior().getJuniorCount() == 2) {
entryCount++;

View File

@@ -1,56 +0,0 @@
/*
This file is part of the OdinMS Maple Story Server
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
Matthias Butz <matze@odinms.de>
Jan Christian Meyer <vimes@odinms.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package tools.data.output;
import java.io.ByteArrayOutputStream;
/**
* Uses a byte array to output a stream of bytes.
*
* @author Frz
* @version 1.0
* @since Revision 352
*/
class BAOSByteOutputStream implements ByteOutputStream {
private ByteArrayOutputStream baos;
/**
* Class constructor - Wraps the stream around a Java BAOS.
*
* @param baos <code>The ByteArrayOutputStream</code> to wrap this around.
*/
BAOSByteOutputStream(ByteArrayOutputStream baos) {
super();
this.baos = baos;
}
/**
* Writes a byte to the stream.
*
* @param b The byte to write to the stream.
* @see tools.data.output.ByteOutputStream#writeByte(byte)
*/
@Override
public void writeByte(byte b) {
baos.write(b);
}
}

View File

@@ -1,38 +0,0 @@
/*
This file is part of the OdinMS Maple Story Server
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
Matthias Butz <matze@odinms.de>
Jan Christian Meyer <vimes@odinms.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package tools.data.output;
/**
* Provides an interface to an output stream of bytes.
*
* @author Frz
* @since Revision 323
* @version 1.0
*/
interface ByteOutputStream {
/**
* Writes a byte to the stream.
*
* @param b The byte to write.
*/
void writeByte(byte b);
}

View File

@@ -1,185 +0,0 @@
/*
This file is part of the OdinMS Maple Story Server
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
Matthias Butz <matze@odinms.de>
Jan Christian Meyer <vimes@odinms.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package tools.data.output;
import constants.string.CharsetConstants.MapleLanguageType;
import java.awt.*;
import java.nio.charset.Charset;
/**
* Provides a generic writer of a little-endian sequence of bytes.
*
* @author Frz
* @version 1.0
* @since Revision 323
*/
public class GenericLittleEndianWriter implements LittleEndianWriter {
private static Charset ASCII = Charset.forName(MapleLanguageType.LANGUAGE_US.getAscii());
private ByteOutputStream bos;
/**
* Class constructor - Protected to prevent instantiation with no arguments.
*/
protected GenericLittleEndianWriter() {
// Blah!
}
/**
* Sets the byte-output stream for this instance of the object.
*
* @param bos The new output stream to set.
*/
void setByteOutputStream(ByteOutputStream bos) {
this.bos = bos;
}
/**
* Write an array of bytes to the stream.
*
* @param b The bytes to write.
*/
@Override
public void write(byte[] b) {
for (byte value : b) {
bos.writeByte(value);
}
}
/**
* Write a byte to the stream.
*
* @param b The byte to write.
*/
@Override
public void write(byte b) {
bos.writeByte(b);
}
/**
* Write a byte in integer form to the stream.
*
* @param b The byte as an <code>Integer</code> to write.
*/
@Override
public void write(int b) {
bos.writeByte((byte) b);
}
@Override
public void skip(int b) {
write(new byte[b]);
}
/**
* Write a short integer to the stream.
*
* @param i The short integer to write.
*/
@Override
public void writeShort(int i) {
bos.writeByte((byte) (i & 0xFF));
bos.writeByte((byte) ((i >>> 8) & 0xFF));
}
/**
* Writes an integer to the stream.
*
* @param i The integer to write.
*/
@Override
public void writeInt(int i) {
bos.writeByte((byte) (i & 0xFF));
bos.writeByte((byte) ((i >>> 8) & 0xFF));
bos.writeByte((byte) ((i >>> 16) & 0xFF));
bos.writeByte((byte) ((i >>> 24) & 0xFF));
}
/**
* Writes an ASCII string the the stream.
*
* @param s The ASCII string to write.
*/
@Override
public void writeAsciiString(String s) {
write(s.getBytes(ASCII));
}
/**
* Writes a maple-convention ASCII string to the stream.
*
* @param s The ASCII string to use maple-convention to write.
*/
@Override
public void writeMapleAsciiString(String s) {
writeShort((short) s.length());
writeAsciiString(s);
}
/**
* Writes a null-terminated ASCII string to the stream.
*
* @param s The ASCII string to write.
*/
@Override
public void writeNullTerminatedAsciiString(String s) {
writeAsciiString(s);
write(0);
}
/**
* Write a long integer to the stream.
* @param l The long integer to write.
*/
@Override
public void writeLong(long l) {
bos.writeByte((byte) (l & 0xFF));
bos.writeByte((byte) ((l >>> 8) & 0xFF));
bos.writeByte((byte) ((l >>> 16) & 0xFF));
bos.writeByte((byte) ((l >>> 24) & 0xFF));
bos.writeByte((byte) ((l >>> 32) & 0xFF));
bos.writeByte((byte) ((l >>> 40) & 0xFF));
bos.writeByte((byte) ((l >>> 48) & 0xFF));
bos.writeByte((byte) ((l >>> 56) & 0xFF));
}
/**
* Writes a 2D 4 byte position information
*
* @param s The Point position to write.
*/
@Override
public void writePos(Point s) {
writeShort(s.x);
writeShort(s.y);
}
/**
* Writes a boolean true ? 1 : 0
*
* @param b The boolean to write.
*/
@Override
public void writeBool(final boolean b) {
write(b ? 1 : 0);
}
}

View File

@@ -1,114 +0,0 @@
/*
This file is part of the OdinMS Maple Story Server
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
Matthias Butz <matze@odinms.de>
Jan Christian Meyer <vimes@odinms.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package tools.data.output;
import java.awt.*;
/**
* Provides an interface to a writer class that writes a little-endian sequence
* of bytes.
*
* @author Frz
* @version 1.0
* @since Revision 323
*/
public interface LittleEndianWriter {
/**
* Write an array of bytes to the sequence.
*
* @param b The bytes to write.
*/
void write(byte[] b);
/**
* Write a byte to the sequence.
*
* @param b The byte to write.
*/
void write(byte b);
/**
* Write a byte in integer form to the sequence.
*
* @param b The byte as an <code>Integer</code> to write.
*/
void write(int b);
void skip(int b);
/**
* Writes an integer to the sequence.
*
* @param i The integer to write.
*/
void writeInt(int i);
/**
* Write a short integer to the sequence.
*
* @param s The short integer to write.
*/
void writeShort(int s);
/**
* Write a long integer to the sequence.
*
* @param l The long integer to write.
*/
void writeLong(long l);
/**
* Writes an ASCII string the the sequence.
*
* @param s The ASCII string to write.
*/
void writeAsciiString(String s);
/**
* Writes a null-terminated ASCII string to the sequence.
*
* @param s The ASCII string to write.
*/
void writeNullTerminatedAsciiString(String s);
/**
* Writes a maple-convention ASCII string to the sequence.
*
* @param s The ASCII string to use maple-convention to write.
*/
void writeMapleAsciiString(String s);
/**
* Writes a 2D 4 byte position information
*
* @param s The Point position to write.
*/
void writePos(Point s);
/**
* Writes a boolean true ? 1 : 0
*
* @param b The boolean to write.
*/
void writeBool(final boolean b);
}

View File

@@ -1,73 +0,0 @@
/*
This file is part of the OdinMS Maple Story Server
Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
Matthias Butz <matze@odinms.de>
Jan Christian Meyer <vimes@odinms.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation version 3 as published by
the Free Software Foundation. You may not use, modify or distribute
this program under any other version of the GNU Affero General Public
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package tools.data.output;
import java.io.ByteArrayOutputStream;
import tools.HexTool;
/**
* Writes a maplestory-packet little-endian stream of bytes.
*
* @author Frz
* @version 1.0
* @since Revision 352
*/
public class MaplePacketLittleEndianWriter extends GenericLittleEndianWriter {
private ByteArrayOutputStream baos;
/**
* Constructor - initializes this stream with a default size.
*/
public MaplePacketLittleEndianWriter() {
this(32);
}
/**
* Constructor - initializes this stream with size <code>size</code>.
*
* @param size The size of the underlying stream.
*/
public MaplePacketLittleEndianWriter(int size) {
this.baos = new ByteArrayOutputStream(size);
setByteOutputStream(new BAOSByteOutputStream(baos));
}
/**
* Gets a <code>MaplePacket</code> instance representing this
* sequence of bytes.
*
* @return A <code>MaplePacket</code> with the bytes in this stream.
*/
public byte[] getPacket() {
return baos.toByteArray();
}
/**
* Changes this packet into a human-readable hexadecimal stream of bytes.
*
* @return This packet as hex digits.
*/
@Override
public String toString() {
return HexTool.toString(baos.toByteArray());
}
}