mirror of
https://github.com/2006-Scape/2006RebottedClient.git
synced 2026-07-02 16:49:02 +00:00
06 Maps/Floors/Objects - Swing ScriptSelector - minor bug fixes
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -6316,7 +6316,6 @@ public class Client extends GameApplet {
|
||||
ObjectDefinition.clear();
|
||||
NpcDefinition.clear();
|
||||
ItemDefinition.clear();
|
||||
FloorDefinition.underlays = null;
|
||||
FloorDefinition.overlays = null;
|
||||
IdentityKit.kits = null;
|
||||
Widget.interfaceCache = null;
|
||||
@@ -7936,6 +7935,16 @@ public class Client extends GameApplet {
|
||||
private void login(String name, String password, boolean reconnecting) {
|
||||
SignLink.setError(name);
|
||||
try {
|
||||
if(name.length() < 3) {
|
||||
firstLoginMessage = "";
|
||||
secondLoginMessage = "Your username is too short.";
|
||||
return;
|
||||
}
|
||||
if(password.length() < 3) {
|
||||
firstLoginMessage = "";
|
||||
secondLoginMessage = "Your password is too short.";
|
||||
return;
|
||||
}
|
||||
if (!reconnecting) {
|
||||
firstLoginMessage = "";
|
||||
secondLoginMessage = "Connecting to server...";
|
||||
|
||||
@@ -281,7 +281,7 @@ public class GameApplet extends Applet implements Runnable, MouseListener,
|
||||
Client.updateChatbox = true;
|
||||
}
|
||||
} else {
|
||||
if(Client.loggedIn && viewport.contains(p)) {
|
||||
if(Client.loggedIn && viewport.contains(p) && Client.openInterfaceId == -1) {
|
||||
if (Client.cameraZoom < 1800 && rotation == 1) {
|
||||
Client.cameraZoom = Client.cameraZoom + 20;
|
||||
} else if (Client.cameraZoom > 20 && rotation == -1) {
|
||||
|
||||
+17
-33
@@ -3,12 +3,12 @@ package org.rebotted.cache.def;
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
import org.rebotted.cache.FileArchive;
|
||||
import org.rebotted.io.Buffer;
|
||||
|
||||
|
||||
public class FloorDefinition {
|
||||
|
||||
public static FloorDefinition[] overlays;
|
||||
public static FloorDefinition[] underlays;
|
||||
|
||||
public int texture;
|
||||
public int rgb;
|
||||
@@ -33,26 +33,17 @@ public class FloorDefinition {
|
||||
}
|
||||
|
||||
public static void unpackConfig(FileArchive streamLoader) {
|
||||
ByteBuffer buffer = ByteBuffer.wrap(streamLoader.readFile("flo.dat"));
|
||||
int underlayAmount = buffer.getShort();
|
||||
Buffer buffer = new Buffer(streamLoader.readFile("flo.dat"));
|
||||
int underlayAmount = buffer.readUShort();
|
||||
System.out.println("Underlay Floors Loaded: "+underlayAmount);
|
||||
underlays = new FloorDefinition[underlayAmount];
|
||||
for (int i = 0; i < underlayAmount; i++) {
|
||||
if (underlays[i] == null) {
|
||||
underlays[i] = new FloorDefinition();
|
||||
}
|
||||
underlays[i].readValuesUnderlay(buffer);
|
||||
underlays[i].generateHsl();
|
||||
if(overlays == null) {
|
||||
overlays = new FloorDefinition[underlayAmount];
|
||||
}
|
||||
int overlayAmount = buffer.getShort();
|
||||
System.out.println("Overlay Floors Loaded: "+overlayAmount);
|
||||
overlays = new FloorDefinition[overlayAmount];
|
||||
for (int i = 0; i < overlayAmount; i++) {
|
||||
for (int i = 0; i < underlayAmount; i++) {
|
||||
if (overlays[i] == null) {
|
||||
overlays[i] = new FloorDefinition();
|
||||
}
|
||||
overlays[i].readValuesOverlay(buffer);
|
||||
overlays[i].generateHsl();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,32 +57,25 @@ public class FloorDefinition {
|
||||
rgbToHsl(rgb);
|
||||
}
|
||||
|
||||
private void readValuesUnderlay(ByteBuffer buffer) {
|
||||
private void readValuesOverlay(Buffer buffer) {
|
||||
for (;;) {
|
||||
int opcode = buffer.get();
|
||||
int opcode = buffer.readUnsignedByte();
|
||||
if (opcode == 0) {
|
||||
break;
|
||||
} else if (opcode == 1) {
|
||||
rgb = ((buffer.get() & 0xff) << 16) + ((buffer.get() & 0xff) << 8) + (buffer.get() & 0xff);
|
||||
} else {
|
||||
System.out.println("Error unrecognised underlay code: " + opcode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void readValuesOverlay(ByteBuffer buffer) {
|
||||
for (;;) {
|
||||
int opcode = buffer.get();
|
||||
if (opcode == 0) {
|
||||
break;
|
||||
} else if (opcode == 1) {
|
||||
rgb = ((buffer.get() & 0xff) << 16) + ((buffer.get() & 0xff) << 8) + (buffer.get() & 0xff);
|
||||
rgb = buffer.read3Bytes();
|
||||
rgbToHsl(rgb);
|
||||
} else if (opcode == 2) {
|
||||
texture = buffer.get() & 0xff;
|
||||
texture = buffer.readUnsignedByte();
|
||||
} else if (opcode == 3) {
|
||||
|
||||
} else if (opcode == 5) {
|
||||
occlude = false;
|
||||
} else if(opcode == 6) {
|
||||
buffer.readString();
|
||||
} else if (opcode == 7) {
|
||||
anotherRgb = ((buffer.get() & 0xff) << 16) + ((buffer.get() & 0xff) << 8) + (buffer.get() & 0xff);
|
||||
anotherRgb = buffer.read3Bytes();
|
||||
rgbToHsl(anotherRgb);
|
||||
} else {
|
||||
System.out.println("Error unrecognised overlay code: " + opcode);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,12 @@ public final class Buffer extends Cacheable {
|
||||
return buffer;
|
||||
}
|
||||
|
||||
public int read3Bytes() {
|
||||
currentPosition += 3;
|
||||
return ((payload[currentPosition - 3] & 0xff) << 16) + ((payload[currentPosition - 2] & 0xff) << 8) + (payload[currentPosition - 1] & 0xff);
|
||||
}
|
||||
|
||||
|
||||
public final int readUTriByte(int i) {
|
||||
currentPosition += 3;
|
||||
return (0xff & payload[currentPosition - 3] << 16)
|
||||
|
||||
@@ -176,7 +176,7 @@ public final class ResourceProvider extends Provider implements Runnable {
|
||||
|
||||
byte[] data = archive.readFile("map_index");
|
||||
Buffer stream = new Buffer(data);
|
||||
int j1 = stream.readUShort();//mapData.length / 6;
|
||||
int j1 = data.length / 7;
|
||||
areas = new int[j1];
|
||||
mapFiles = new int[j1];
|
||||
landscapes = new int[j1];
|
||||
@@ -186,6 +186,7 @@ public final class ResourceProvider extends Provider implements Runnable {
|
||||
areas[i2] = stream.readUShort();
|
||||
mapFiles[i2] = stream.readUShort();
|
||||
landscapes[i2] = stream.readUShort();
|
||||
membersArea[i2] = stream.readUnsignedByte();
|
||||
}
|
||||
|
||||
System.out.println("Map Amount: " + file_amounts[3] + "");
|
||||
|
||||
@@ -120,10 +120,7 @@ public final class MapRegion {
|
||||
if (k9 >= 0 && k9 < regionSizeX) {
|
||||
int l12 = underlays[z][k9][i8] & 0xff;
|
||||
if (l12 > 0) {
|
||||
if (l12 > FloorDefinition.underlays.length) {
|
||||
l12 = FloorDefinition.underlays.length;
|
||||
}
|
||||
FloorDefinition flo = FloorDefinition.underlays[l12 - 1];
|
||||
FloorDefinition flo = FloorDefinition.overlays[l12 - 1];
|
||||
hues[i8] += flo.blendHue;
|
||||
saturations[i8] += flo.saturation;
|
||||
luminances[i8] += flo.luminance;
|
||||
@@ -135,7 +132,7 @@ public final class MapRegion {
|
||||
if (i13 >= 0 && i13 < regionSizeX) {
|
||||
int i14 = underlays[z][i13][i8] & 0xff;
|
||||
if (i14 > 0) {
|
||||
FloorDefinition flo_1 = FloorDefinition.underlays[i14 - 1];
|
||||
FloorDefinition flo_1 = FloorDefinition.overlays[i14 - 1];
|
||||
hues[i8] -= flo_1.blendHue;
|
||||
saturations[i8] -= flo_1.saturation;
|
||||
luminances[i8] -= flo_1.luminance;
|
||||
|
||||
@@ -64,7 +64,7 @@ public final class BotFrame extends JFrame implements ActionListener {
|
||||
switch (e.getActionCommand().toLowerCase()) {
|
||||
case "run":
|
||||
if (ScriptHandler.getInstance().getScriptState() == ScriptHandler.State.STOPPED) {
|
||||
new ScriptSelector(new ScriptLoader(client.getApiData()));
|
||||
new ScriptSelector(new ScriptLoader(client.getApiData())).setVisible(true);
|
||||
} else if (ScriptHandler.getInstance().getScriptState() == ScriptHandler.State.PAUSE) {
|
||||
ScriptHandler.getInstance().setScriptState(ScriptHandler.State.RUNNING);
|
||||
setRunning();
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
package org.rebotted.ui.script;
|
||||
|
||||
import org.rebotted.script.scriptdata.ScriptData;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.EtchedBorder;
|
||||
import java.awt.*;
|
||||
|
||||
public class ScriptPanel extends JPanel {
|
||||
|
||||
private static final long serialVersionUID = -5181188196122580695L;
|
||||
private JButton button;
|
||||
|
||||
public ScriptPanel(final ScriptData scriptData) {
|
||||
setLayout(new BorderLayout());
|
||||
|
||||
setToolTipText(scriptData.getDesc());
|
||||
|
||||
button = new JButton("Start");
|
||||
|
||||
add(button, BorderLayout.SOUTH);
|
||||
|
||||
final JLabel scriptName = new JLabel(scriptData.getName());
|
||||
|
||||
scriptName.setHorizontalAlignment(JLabel.CENTER);
|
||||
|
||||
add(scriptName, BorderLayout.NORTH);
|
||||
|
||||
setBorder(new EtchedBorder());
|
||||
}
|
||||
|
||||
public JButton getButton() {
|
||||
return button;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,115 +1,134 @@
|
||||
package org.rebotted.ui.script;
|
||||
|
||||
import org.rebotted.directory.DirectoryManager;
|
||||
import org.rebotted.script.ScriptHandler;
|
||||
import org.rebotted.script.loader.ScriptLoader;
|
||||
import org.rebotted.script.scriptdata.ScriptData;
|
||||
import org.rebotted.script.types.Script;
|
||||
import org.rebotted.ui.BotFrame;
|
||||
import org.rebotted.ui.menu.BotMenuBar;
|
||||
import org.rebotted.ui.themes.SubstanceDark;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
import javax.swing.table.TableColumnModel;
|
||||
import javax.swing.table.TableModel;
|
||||
import java.awt.*;
|
||||
import java.awt.event.FocusAdapter;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.awt.event.KeyAdapter;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Ethan
|
||||
*/
|
||||
public class ScriptSelector extends JFrame {
|
||||
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private final ScriptLoader scriptLoader;
|
||||
private JTextField searchField;
|
||||
private JComboBox<String> accounts;
|
||||
private JPanel topPanel;
|
||||
private JPanel scriptPanel;
|
||||
private JScrollPane scrollPane;
|
||||
private JScrollPane scrollPane1;
|
||||
private JTable scriptTable;
|
||||
private JButton startButton;
|
||||
private JComboBox accounts;
|
||||
private JTextField search;
|
||||
private ScriptLoader scriptLoader;
|
||||
private List<ScriptData> scripts;
|
||||
|
||||
public ScriptSelector(ScriptLoader scriptLoader) {
|
||||
super("Script Selector");
|
||||
this.scriptLoader = scriptLoader;
|
||||
setResizable(false);
|
||||
searchField = new JTextField(20);
|
||||
searchField.setForeground(Color.LIGHT_GRAY);
|
||||
searchField.setText("Search");
|
||||
searchField.setMaximumSize(new Dimension(100, 30));
|
||||
searchField.addFocusListener(new FocusAdapter() {
|
||||
@Override
|
||||
public void focusGained(FocusEvent e) {
|
||||
super.focusGained(e);
|
||||
searchField.setForeground(Color.BLACK);
|
||||
searchField.setText("");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void focusLost(FocusEvent e) {
|
||||
super.focusLost(e);
|
||||
searchField.setForeground(Color.LIGHT_GRAY);
|
||||
searchField.setText("Search");
|
||||
}
|
||||
});
|
||||
searchField.addKeyListener(new KeyAdapter() {
|
||||
@Override
|
||||
public void keyTyped(KeyEvent e) {
|
||||
super.keyTyped(e);
|
||||
}
|
||||
});
|
||||
|
||||
accounts = new JComboBox<>();
|
||||
|
||||
|
||||
topPanel = new JPanel();
|
||||
topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.X_AXIS));
|
||||
topPanel.add(accounts);
|
||||
topPanel.add(Box.createHorizontalGlue());
|
||||
topPanel.add(searchField);
|
||||
|
||||
scriptPanel = new JPanel();
|
||||
scriptPanel.setLayout(null);
|
||||
|
||||
scrollPane = new JScrollPane(scriptPanel);
|
||||
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
|
||||
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
|
||||
|
||||
getContentPane().setLayout(new BorderLayout());
|
||||
getContentPane().add(topPanel, BorderLayout.NORTH);
|
||||
getContentPane().add(scrollPane, BorderLayout.CENTER);
|
||||
|
||||
|
||||
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
|
||||
setSize(535, 405);
|
||||
loadScripts();
|
||||
setVisible(true);
|
||||
scripts = scriptLoader.getScripts();
|
||||
initComponents();
|
||||
}
|
||||
|
||||
|
||||
private void loadScripts() {
|
||||
scriptPanel.removeAll();
|
||||
java.util.List<ScriptData> scripts = scriptLoader.getScripts();
|
||||
|
||||
final int width = 170;
|
||||
final int height = 115;
|
||||
final int spacing = 3;
|
||||
final int scriptPerRow = 3;
|
||||
int realIndex = 0;
|
||||
for (int scriptIndex = 0; scriptIndex < scripts.size(); scriptIndex++) {
|
||||
final ScriptData scriptData = scripts.get(scriptIndex);
|
||||
final ScriptPanel panel = new ScriptPanel(scriptData);
|
||||
int col = realIndex / scriptPerRow;
|
||||
int row = realIndex - (col * scriptPerRow);
|
||||
int x = row * width + spacing;
|
||||
int y = col * height + spacing;
|
||||
panel.setBounds(x, y, width, height);
|
||||
panel.getButton().addActionListener(e -> {
|
||||
startScript(scriptData);
|
||||
dispose();
|
||||
});
|
||||
scriptPanel.add(panel);
|
||||
realIndex++;
|
||||
private void startScript(ActionEvent e) {
|
||||
final int category = 0;
|
||||
final int name = 1;
|
||||
final int version = 2;
|
||||
final int desc = 3;
|
||||
final int author = 4;
|
||||
final int row = scriptTable.getSelectedRow();
|
||||
final String categoryName = scriptTable.getModel().getValueAt(row, category).toString();
|
||||
final String scriptName = scriptTable.getModel().getValueAt(row, name).toString();
|
||||
final String versionString = scriptTable.getModel().getValueAt(row, version).toString();
|
||||
final String descString = scriptTable.getModel().getValueAt(row, desc).toString();
|
||||
final String authorName = scriptTable.getModel().getValueAt(row, author).toString();
|
||||
for(ScriptData scriptData : scripts) {
|
||||
if(scriptData.getName().equals(scriptName) && scriptData.getAuthor().equals(authorName)) {
|
||||
if(scriptData.getDesc().equals(descString) && String.valueOf(scriptData.getVersion()).equals(versionString)) {
|
||||
if(scriptData.getSkillCategory().getName().equals(categoryName)) {
|
||||
startScript(scriptData);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
searchField.setText("");
|
||||
scriptPanel.setPreferredSize(new Dimension(535, (int) (Math.ceil((Double.valueOf(scriptPanel.getComponentCount()) / 3.0)) * height)));
|
||||
}
|
||||
|
||||
private void initComponents() {
|
||||
scrollPane1 = new JScrollPane();
|
||||
startButton = new JButton();
|
||||
accounts = new JComboBox();
|
||||
search = new JTextField();
|
||||
|
||||
setTitle("2006Rebotted - Script Selector");
|
||||
setResizable(false);
|
||||
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
|
||||
final Container contentPane = getContentPane();
|
||||
contentPane.setLayout(null);
|
||||
final java.util.List<String> columns = new ArrayList<>();
|
||||
final java.util.List<String[]> values = new ArrayList<>();
|
||||
columns.add("Category");
|
||||
columns.add("Script");
|
||||
columns.add("Version");
|
||||
columns.add("Description");
|
||||
columns.add("Author");
|
||||
|
||||
for (ScriptData scriptData : scripts) {
|
||||
values.add(new String[]{scriptData.getSkillCategory().getName(), scriptData.getName(), String.valueOf(scriptData.getVersion()), scriptData.getDesc(), scriptData.getAuthor()});
|
||||
}
|
||||
final TableModel tableModel = new DefaultTableModel(values.toArray(new Object[][]{}), columns.toArray());
|
||||
|
||||
scriptTable = new JTable(tableModel);
|
||||
|
||||
scriptTable.setDefaultEditor(Object.class, null);
|
||||
|
||||
TableColumnModel cm = scriptTable.getColumnModel();
|
||||
cm.getColumn(0).setMinWidth(110);
|
||||
cm.getColumn(0).setMaxWidth(110);
|
||||
cm.getColumn(1).setMinWidth(180);
|
||||
cm.getColumn(1).setMaxWidth(180);
|
||||
cm.getColumn(2).setMinWidth(60);
|
||||
cm.getColumn(2).setMaxWidth(60);
|
||||
cm.getColumn(3).setMinWidth(40);
|
||||
cm.getColumn(4).setMinWidth(100);
|
||||
cm.getColumn(4).setMaxWidth(100);
|
||||
|
||||
scrollPane1.setViewportView(scriptTable);
|
||||
|
||||
contentPane.add(scrollPane1);
|
||||
scrollPane1.setBounds(0, 0, 640, 280);
|
||||
|
||||
startButton.setText("Start");
|
||||
startButton.addActionListener(e -> startScript(e));
|
||||
contentPane.add(startButton);
|
||||
startButton.setBounds(545, 280, 93, startButton.getPreferredSize().height);
|
||||
contentPane.add(accounts);
|
||||
accounts.setBounds(5, 280, 250, accounts.getPreferredSize().height);
|
||||
contentPane.add(search);
|
||||
search.setBounds(270, 281, 255, search.getPreferredSize().height);
|
||||
|
||||
|
||||
final Dimension preferredSize = new Dimension();
|
||||
|
||||
for (int i = 0; i < contentPane.getComponentCount(); i++) {
|
||||
Rectangle bounds = contentPane.getComponent(i).getBounds();
|
||||
preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width);
|
||||
preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height);
|
||||
}
|
||||
|
||||
Insets insets = contentPane.getInsets();
|
||||
preferredSize.width += insets.right;
|
||||
preferredSize.height += insets.bottom;
|
||||
contentPane.setMinimumSize(preferredSize);
|
||||
contentPane.setPreferredSize(preferredSize);
|
||||
|
||||
setSize(645, 340);
|
||||
setLocationRelativeTo(getOwner());
|
||||
}
|
||||
|
||||
private void startScript(ScriptData scriptData) {
|
||||
@@ -121,5 +140,6 @@ public class ScriptSelector extends JFrame {
|
||||
}
|
||||
ScriptHandler.getInstance().start(script, scriptData);
|
||||
BotFrame.setRunning();
|
||||
dispose();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user