@ -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 ) ) ;
egg propertiespanel. setVisible ( false ) ;
item propertiespanel. 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 ;
}
}
}