Include ability to select egg game mode or item hunt mode when creating

sessions now. Displays the appropriate information in the panels.
dev
sigonasr2 7 years ago
parent 54181c7f7a
commit 52ef6ec184
  1. BIN
      sigIRCv2.jar
  2. 2
      src/sig/modules/RabiRace/MemoryData.java
  3. 57
      src/sig/modules/RabiRace/Profile.java
  4. 14
      src/sig/modules/RabiRace/Session.java
  5. 158
      src/sig/modules/RabiRace/SessionCreateWindow.java
  6. 10
      src/sig/modules/RabiRace/SessionListWindow.java
  7. 13
      src/sig/modules/RabiRaceModule.java
  8. 1
      src/sig/sigIRC.java

Binary file not shown.

@ -35,7 +35,7 @@ public enum MemoryData {
EXPLODE_SHOT(MemoryOffset.EXPLODE_SHOT,"Explode Shot","explode_shot.png",true),
AIR_DASH(MemoryOffset.AIR_DASH,"Air Dash","air_dash.png",true),
BUNNY_STRIKE(MemoryOffset.BUNNY_STRIKE,"Bunny Strike","bunny_strike.png",true),
STRANGE_BOX(MemoryOffset.STRANGE_BOX,"Strage Box","strange_box.png",true),
STRANGE_BOX(MemoryOffset.STRANGE_BOX,"Strange Box","strange_box.png",true),
WALL_JUMP(MemoryOffset.WALL_JUMP,"Wall Jump","wall_jump.png",true),
SPIKE_BARRIER(MemoryOffset.SPIKE_BARRIER,"Spike Barrier","spike_barrier.png",true),
BUNNY_AMULET(MemoryOffset.BUNNY_AMULET,"Bunny Amulet","bunny_amulet.png",true),

@ -284,7 +284,7 @@ public class Profile {
return Avatar.getAvatarFromID(randomnumb);
}
public Image getStatText(int w) {
public Image getStatText(int w, Session session) {
BufferedImage tmp = new BufferedImage(400,175,BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = tmp.createGraphics();
@ -346,7 +346,7 @@ public class Profile {
return diffstring;
}
public Image getStatPanel(int w) {
public Image getStatPanel(int w, Session session) {
//DrawUtils.drawTextFont(g, sigIRC.panel.userFont, parent.position.getX(), parent.position.getY()+26, Color.BLACK, "Values: "+readIntFromMemory(MemoryOffset.DLC_ITEM1)+","+readIntFromMemory(MemoryOffset.DLC_ITEM2)+","+readIntFromMemory(MemoryOffset.DLC_ITEM3)+","+readIntFromMemory(MemoryOffset.DLC_ITEM4));
BufferedImage tmp = new BufferedImage(400,175,BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = tmp.createGraphics();
@ -355,11 +355,38 @@ public class Profile {
int spacing=width/5;
int shiftyval = 0;
double iconsize = 1;
if (rainbowEggCount<=5) {
Image img = RabiRaceModule.image_map.get("easter_egg.png");
for (int i=0;i<5;i++) {
Color col = (rainbowEggCount>i)?RabiRaceModule.rainbowcycler.getCycleColor():new Color(0,0,0,192);
DrawUtils.drawImage(g2, img, (int)(border+i*spacing-img.getWidth(sigIRC.panel)/4),(int)(36),col,sigIRC.panel);
final int icon_size = 24;
int gamemode = -1;
if (RabiRaceModule.mySession!=null) {
gamemode = RabiRaceModule.mySession.gamemode;
}
if (gamemode!=-1) {
switch (gamemode) {
case 0:{ //Egg Hunt.
spacing = width/session.eggCount;
Image img = RabiRaceModule.image_map.get("easter_egg.png");
for (int i=0;i<session.eggCount;i++) {
Color col = (rainbowEggCount>i)?RabiRaceModule.rainbowcycler.getCycleColor():new Color(0,0,0,192);
DrawUtils.drawImage(g2, img, (int)(border+i*spacing-img.getWidth(sigIRC.panel)/4),(int)(36),col,sigIRC.panel);
}
}break;
case 1:{ //Item Hunt.
spacing = width/session.itemHuntData.length;
for (int i=0;i<session.itemHuntData.length;i++) {
MemoryData item = MemoryData.valueOf(session.itemHuntData[i]);
if ((key_items.containsKey(item) &&
key_items.get(item)>=1) ||
(badges.containsKey(item) &&
badges.get(item)>=1)) {
//DrawUtils.drawImage(g2, item.getImage(), (int)(border+i*spacing-item.getImage().getWidth(sigIRC.panel)/4),(int)(36),col,sigIRC.panel);
g2.drawImage(item.getImage(), (int)(border+i*spacing),(int)(36+16), icon_size*2, icon_size*2, sigIRC.panel);
} else {
DrawUtils.drawImageScaled(g2, item.getImage(), (int)(border+i*spacing),(int)(36+16),icon_size*2, icon_size*2,new Color(0,0,0,192),sigIRC.panel);
}
}
}
}
} else {
shiftyval = -RabiRaceModule.image_map.get("easter_egg.png").getWidth(sigIRC.panel)/2;
@ -374,7 +401,6 @@ public class Profile {
}
*/
int size = key_items.size();
final int icon_size = 24;
int count = 0;
try {
for (MemoryData data : key_items.keySet()) {
@ -487,7 +513,16 @@ public class Profile {
return new Point(x,y);
}
public static void DrawMultiPanel(Graphics g, int x, int y, int w, List<Profile> players) {
public static void DrawMultiPanel(Graphics g, int x, int y, int w, Session session) {
List<Profile> players = session.getPlayers();
if (RabiRaceModule.mySession!=null && session.id==RabiRaceModule.mySession.id) {
for (int i=0;i<players.size();i++) {
Profile p = players.get(i);
if (p.username.equalsIgnoreCase(RabiRaceModule.module.myProfile.username)) {
players.remove(i--);
}
}
}
int cols = calculateMultiPanelView(players.size()).x;
int rows = calculateMultiPanelView(players.size()).y;
@ -495,8 +530,8 @@ public class Profile {
int yy = 0;
for (Profile p : players) {
Image panel = p.getStatPanel(w);
Image panel2 = p.getStatText(w);
Image panel = p.getStatPanel(w,session);
Image panel2 = p.getStatText(w,session);
g.drawImage(panel,(int)(x+xx*panel.getWidth(sigIRC.panel)/((rows+cols)/2d)),(int)(y+yy*panel.getHeight(sigIRC.panel)/((rows+cols)/2d)),(int)(panel.getWidth(sigIRC.panel)/((rows+cols)/2d)),(int)(panel.getHeight(sigIRC.panel)/((rows+cols)/2d)),sigIRC.panel);
g.drawImage(panel2,(int)(x+xx*panel2.getWidth(sigIRC.panel)/((rows+cols)/2d)),(int)(y+yy*panel2.getHeight(sigIRC.panel)/((rows+cols)/2d)),(int)(panel2.getWidth(sigIRC.panel)/((rows+cols)/2d)),(int)(panel2.getHeight(sigIRC.panel)/((rows+cols)/2d)),sigIRC.panel);
if (xx+1<cols) {

@ -15,6 +15,9 @@ public class Session {
int maxPlayers = 0;
String password = "";
float difficulty = -1;
int gamemode = 0; //0 = Egg Mode, 1 = Item Hunt Mode
String[] itemHuntData;
int eggCount = 0;
int id = 0;
List<Profile> players = new ArrayList<Profile>();
@ -65,6 +68,17 @@ public class Session {
if (split.length>=8) {
difficulty = Float.parseFloat(split[i++]);
}
if (split.length>=9) {
gamemode = Integer.parseInt(split[i++]);
switch (gamemode) {
case 0:{
eggCount = Integer.parseInt(split[i++]);
}break;
case 1:{
itemHuntData = split[i++].split(";");
}break;
}
}
}
public int getID() {

@ -1,7 +1,9 @@
package sig.modules.RabiRace;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
@ -13,14 +15,17 @@ import java.util.List;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.ListCellRenderer;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
@ -37,8 +42,10 @@ public class SessionCreateWindow extends JFrame{
JPasswordField pass = new JPasswordField();
JComboBox<String> gametype = new JComboBox<String>();
NumberValidationField eggcount = new NumberValidationField();
List<JComboBox<String>> itemHunt = new ArrayList<JComboBox<String>>();
public List<ItemDisplayBox<MemoryData>> itemHunt = new ArrayList<ItemDisplayBox<MemoryData>>();
JButton create = new JButton("Create");
public JPanel itempropertiespanel = new JPanel();
public int currentHuntBox = 0;
public SessionCreateWindow() {
this.setTitle("Create Rabi-Race Session");
@ -50,7 +57,6 @@ public class SessionCreateWindow extends JFrame{
JPanel difficultypanel = new JPanel();
JPanel modepanel = new JPanel();
JPanel eggpropertiespanel = new JPanel();
JPanel itempropertiespanel = new JPanel();
JPanel[] panel_list = new JPanel[]{
namepanel,playerpanel,passwordpanel,difficultypanel,modepanel,eggpropertiespanel,itempropertiespanel
@ -98,9 +104,8 @@ public class SessionCreateWindow extends JFrame{
gametype.addItem("Egg Mode");
gametype.addItem("Item Mode");
itempropertiespanel.setVisible(false);
eggpropertiespanel.setLayout(new BoxLayout(eggpropertiespanel,BoxLayout.LINE_AXIS));
eggpropertiespanel.setVisible(false);
itempropertiespanel.setVisible(false);
JLabel eggLabel = new JLabel("Egg Count: ");
eggcount.setText("5");
eggcount.setPreferredSize(new Dimension(60,24));
@ -118,17 +123,32 @@ public class SessionCreateWindow extends JFrame{
case "Egg Mode":{
eggpropertiespanel.setVisible(true);
itempropertiespanel.setVisible(false);
for (ItemDisplayBox box : itemHunt) {
box.myPanel.setVisible(false);
box.set=false;
}
RabiRaceModule.module.createwindow.setSize(400, 240);
}break;
case "Item Mode":{
eggpropertiespanel.setVisible(false);
itempropertiespanel.setVisible(true);
currentHuntBox = 0;
for (ItemDisplayBox box : itemHunt) {
box.setSelectedIndex(0);
}
itemHunt.get(0).myPanel.setVisible(true);
}break;
}
}
});
/*itempropertiespanel.setLayout(new BoxLayout(itempropertiespanel,BoxLayout.LINE_AXIS));
ItemDisplayBox<MemoryData> itemBox = new ItemDisplayBox<MemoryData>(this);
itemHunt.add(itemBox);
JLabel itemLabel = new JLabel("Item 1: ");
//itempropertiespanel.
itempropertiespanel.add(itemLabel);
itempropertiespanel.add(itemBox);*/
modepanel.add(modeLabel);
modepanel.add(gametype);
@ -162,10 +182,22 @@ public class SessionCreateWindow extends JFrame{
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Your max player count needs to be between 2-48!", "Error!", JOptionPane.WARNING_MESSAGE);
return;
}
if (((String)gametype.getSelectedItem()).equalsIgnoreCase("Egg Mode") && !TextUtils.isInteger(eggcount.getText(), 10)) {
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Your egg count is invalid!", "Error!", JOptionPane.WARNING_MESSAGE);
return;
}
if (((String)gametype.getSelectedItem()).equalsIgnoreCase("Egg Mode") && (Integer.parseInt(eggcount.getText())>48 || Integer.parseInt(eggcount.getText())<2)) {
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Your egg count needs to be between 2-48!", "Error!", JOptionPane.WARNING_MESSAGE);
return;
}
if (!TextUtils.isNumeric(difficulty.getText()) && difficulty.getText().length()>0) {
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Your difficulty value is invalid! (A number between 0.00 and 10.00)", "Error!", JOptionPane.WARNING_MESSAGE);
return;
}
if (GetModeData()==null) {
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Mode Input is completely wrong! THIS SHOULD NOT BE HAPPENING! Please let the developer know about this.", "Error!", JOptionPane.WARNING_MESSAGE);
return;
}
String hashpass = "";
if (String.copyValueOf(pass.getPassword()).length()>0) {
hashpass = SessionListWindow.GetHashedPassword(String.copyValueOf(pass.getPassword()));
@ -174,7 +206,8 @@ public class SessionCreateWindow extends JFrame{
sessionText = sessionText.replaceAll(" ", "%20");
File file = new File(sigIRC.BASEDIR+"sigIRC/tmp.data");
try {
org.apache.commons.io.FileUtils.copyURLToFile(new URL("http://45.33.13.215/rabirace/send.php?key=sessioncreate&name="+sessionText+"&players="+maxplayers.getText()+"&password="+((hashpass.length()>0)?hashpass:"none")+"&difficulty="+((difficulty.getText().length()>0)?difficulty.getText():"-1")),file);
//System.out.println("Write to "+"http://45.33.13.215/rabirace/send.php?key=sessioncreate&name="+sessionText+"&players="+maxplayers.getText()+"&password="+((hashpass.length()>0)?hashpass:"none")+"&difficulty="+((difficulty.getText().length()>0)?difficulty.getText():"-1")+"&mode="+GetModeIndex()+"&extradata="+GetModeData());
org.apache.commons.io.FileUtils.copyURLToFile(new URL("http://45.33.13.215/rabirace/send.php?key=sessioncreate&name="+sessionText+"&players="+maxplayers.getText()+"&password="+((hashpass.length()>0)?hashpass:"none")+"&difficulty="+((difficulty.getText().length()>0)?difficulty.getText():"-1")+"&mode="+GetModeIndex()+"&extradata="+GetModeData()),file);
//org.apache.commons.io.FileUtils.copyURLToFile(new URL("http://45.33.13.215/rabirace/send.php?key=sessioncreate&name="+session_name.getText()+"&players="+maxplayers.getText()+"&password="+((hashpass.length()>0)?hashpass:"none")),file);
String[] contents = FileUtils.readFromFile(sigIRC.BASEDIR+"sigIRC/tmp.data");
int sessionID=-1;
@ -195,6 +228,44 @@ public class SessionCreateWindow extends JFrame{
e.printStackTrace();
}
}
private String GetModeIndex() {
switch (((String)gametype.getSelectedItem())) {
case "Egg Mode":{
return "0";
}
case "Item Mode":{
return "1";
}
default:{
return null;
}
}
}
private String GetModeData() {
switch (((String)gametype.getSelectedItem())) {
case "Egg Mode":{
return eggcount.getText();
}
case "Item Mode":{
StringBuilder sb = new StringBuilder("");
for (ItemDisplayBox box : itemHunt) {
if (box.getSelectedIndex()!=0 && box.getSelectedItem() instanceof MemoryData) {
if (sb.length()!=0) {
sb.append(";");
}
sb.append(((MemoryData)box.getSelectedItem()).name());
}
}
return sb.toString();
}
default:{
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Mode Index is completely wrong! THIS SHOULD NOT BE HAPPENING! Please let the developer know about this.", "Error!", JOptionPane.WARNING_MESSAGE);
return null;
}
}
}
});
//create.add(Box.createRigidArea(new Dimension(24,24)));
@ -209,8 +280,15 @@ public class SessionCreateWindow extends JFrame{
container.add(playerpanel);
container.add(passwordpanel);
container.add(difficultypanel);
//container.add(modepanel);
//container.add(eggpropertiespanel);
container.add(modepanel);
container.add(eggpropertiespanel);
container.add(itempropertiespanel);
for (int i=0;i<10;i++) {
ItemDisplayBox<MemoryData> box = new ItemDisplayBox<MemoryData>(this);
box.myPanel.setVisible(false);
container.add(box.myPanel);
itemHunt.add(box);
}
container.add(create);
container.add(Box.createRigidArea(new Dimension(24,24)));
@ -337,4 +415,68 @@ public class SessionCreateWindow extends JFrame{
return false;
}
}
class ItemDisplayBox<E> extends JComboBox<E>{
ItemDisplayBox box;
SessionCreateWindow parent;
JLabel mylabel = new JLabel("Item "+(itemHunt.size()+1)+": ");
JPanel myPanel = new JPanel();
boolean set=false;
public ItemDisplayBox(SessionCreateWindow frame) {
box = this;
myPanel.setLayout(new BoxLayout(myPanel,BoxLayout.LINE_AXIS));
myPanel.setSize(400, 24);
myPanel.setMinimumSize(new Dimension(400, 24));
myPanel.add(Box.createRigidArea(new Dimension(24,24)));
myPanel.add(mylabel);
myPanel.add(this);
this.parent=frame;
this.addItem((E)"");
for (MemoryData md : MemoryData.values()) {
this.addItem((E)md);
}
this.setRenderer(new ItemLabelRenderer());
this.setMaximumRowCount(6);
this.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent ev) {
if (box.getSelectedItem() instanceof MemoryData && !box.set) {
box.set=true;
if (currentHuntBox<9) {
parent.itemHunt.get(++parent.currentHuntBox).myPanel.setVisible(true);
parent.setSize(parent.getWidth(), parent.getHeight()+24);
}
}
}
});
}
}
class ItemLabelRenderer extends JLabel implements ListCellRenderer{
public ItemLabelRenderer() {
setOpaque(true);
}
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
if (value instanceof MemoryData) {
this.setIcon(new ImageIcon(((MemoryData)value).getImage().getScaledInstance(24, 24, Image.SCALE_DEFAULT)));
setText(((MemoryData)value).getDisplayName());
} else {
this.setIcon(new ImageIcon(RabiRaceModule.UNKNOWN_ITEM));
setText("<None>");
}
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
setFont(sigIRC.panel.rabiRibiMoneyDisplayFont);
setIconTextGap(4);
return this;
}
}
}

@ -54,8 +54,8 @@ public class SessionListWindow extends JFrame{
previewPanel.setWindow(this);
scrolllist.setViewportView(sessionlist);
scrolllist.setPreferredSize(new Dimension(272,150));
scrolllist.setMinimumSize(new Dimension(272,150));
scrolllist.setPreferredSize(new Dimension(320,150));
scrolllist.setMinimumSize(new Dimension(320,150));
scrolllist.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
JPanel sessionPanel = new JPanel();
@ -64,8 +64,8 @@ public class SessionListWindow extends JFrame{
sessionlist.setVisibleRowCount(6);
sessionPanel.setLayout(new BoxLayout(sessionPanel,BoxLayout.PAGE_AXIS));
sessionPanel.setSize(130,200);
sessionPanel.setMinimumSize(new Dimension(130,200));
sessionPanel.setSize(160,200);
sessionPanel.setMinimumSize(new Dimension(160,200));
sessionPanel.add(scrolllist);
sessionPanel.add(Box.createRigidArea(new Dimension(10,10)));
@ -234,7 +234,7 @@ public class SessionListWindow extends JFrame{
//Get the players from that session.
Session s = RabiRaceModule.module.session_listing.data.get(selectedID);
Profile.DrawMultiPanel(g,0,0,400,s.players);
Profile.DrawMultiPanel(g,0,0,400,s);
}
}
}

@ -59,6 +59,7 @@ public class RabiRaceModule extends Module{
long rabiRibiMemOffset = 0;
public HANDLE rabiribiProcess = null;
public static HashMap<String,Image> image_map = new HashMap<String,Image>();
public static Image UNKNOWN_ITEM;
public static ColorCycler rainbowcycler = new ColorCycler(new Color(255,0,0,96),16);
public Profile myProfile = new Profile(this,false);
public static RabiRaceModule module;
@ -155,6 +156,12 @@ public class RabiRaceModule extends Module{
}
}
try {
UNKNOWN_ITEM = ImageIO.read(new File(sigIRC.BASEDIR+"sigIRC/rabi-ribi/unknown.png"));
} catch (IOException e) {
e.printStackTrace();
}
//trimeadProfile.username = "trimead";
join_button = new JoinButton(new Rectangle(2,(int)(position.getHeight()-18),120,18),"Join Session (0)",this);
@ -432,7 +439,7 @@ public class RabiRaceModule extends Module{
DrawUtils.drawTextFont(g, sigIRC.panel.userFont, position.getX(), position.getY()+26, Color.BLACK, "Rabi-Ribi not found! Please start it.");
} else {
//myProfile.draw(g);
Image panel = myProfile.getStatPanel((int)position.getWidth());
Image panel = myProfile.getStatPanel((int)position.getWidth(),mySession);
if (sigIRC.panel.lastMouseX>=position.getX() &&
sigIRC.panel.lastMouseX<=position.getX()+(int)(position.getWidth()/400)*50 &&
@ -448,7 +455,7 @@ public class RabiRaceModule extends Module{
}
g.drawImage(panel, (int)position.getX(), (int)position.getY(), sigIRC.panel);
g.drawImage(myProfile.getStatText((int)position.getWidth()), (int)position.getX(), (int)position.getY(), sigIRC.panel);
g.drawImage(myProfile.getStatText((int)position.getWidth(),mySession), (int)position.getX(), (int)position.getY(), sigIRC.panel);
//Profile.DrawMultiPanel(g, (int)(position.getX()), (int)(position.getY())+panel.getHeight(sigIRC.panel), (int)position.getWidth(), testing);
if (mySession!=null) {
@ -459,7 +466,7 @@ public class RabiRaceModule extends Module{
//System.out.println("Found unique player "+p);
}
}
Profile.DrawMultiPanel(g, (int)(position.getX()), (int)(position.getY())+panel.getHeight(sigIRC.panel), (int)position.getWidth(), sessionPlayers);
Profile.DrawMultiPanel(g, (int)(position.getX()), (int)(position.getY())+panel.getHeight(sigIRC.panel), (int)position.getWidth(), mySession);
}
if (firstCheck) {

@ -294,6 +294,7 @@ public class sigIRC{
manager = new FileManager("sigIRC/logs/",true); manager.verifyAndFetchFileFromServer();
manager = new FileManager("sigIRC/sounds/",true); manager.verifyAndFetchFileFromServer();
manager = new FileManager("sigIRC/rabi-ribi/",true); manager.verifyAndFetchFileFromServer();
manager = new FileManager("sigIRC/rabi-ribi/unknown.png"); manager.verifyAndFetchFileFromServer();
manager = new FileManager("sigIRC/rabi-ribi/characters",true); manager.verifyAndFetchFileFromServer();
manager = new FileManager("sigIRC/rabi-ribi/items",true); manager.verifyAndFetchFileFromServer();
//manager = new FileManager("sigIRC/sounds/Glaceon_cry.wav"); manager.verifyAndFetchFileFromServer();

Loading…
Cancel
Save