parent
b5277a8d8b
commit
776bedf358
Binary file not shown.
@ -0,0 +1,226 @@ |
||||
package sig.modules.RabiRace; |
||||
|
||||
import java.awt.Color; |
||||
import java.awt.Dimension; |
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.ActionListener; |
||||
import java.io.File; |
||||
import java.io.IOException; |
||||
import java.net.MalformedURLException; |
||||
import java.net.URL; |
||||
|
||||
import javax.swing.Box; |
||||
import javax.swing.BoxLayout; |
||||
import javax.swing.JButton; |
||||
import javax.swing.JFrame; |
||||
import javax.swing.JLabel; |
||||
import javax.swing.JOptionPane; |
||||
import javax.swing.JPanel; |
||||
import javax.swing.JPasswordField; |
||||
import javax.swing.JTextField; |
||||
import javax.swing.event.DocumentEvent; |
||||
import javax.swing.event.DocumentListener; |
||||
|
||||
import sig.sigIRC; |
||||
import sig.modules.RabiRaceModule; |
||||
import sig.utils.FileUtils; |
||||
import sig.utils.TextUtils; |
||||
|
||||
public class SessionCreateWindow extends JFrame{ |
||||
JPanel container = new JPanel(); |
||||
LengthValidationField session_name = new LengthValidationField(16); |
||||
NumberValidationField maxplayers = new NumberValidationField(); |
||||
JPasswordField pass = new JPasswordField(); |
||||
JButton create = new JButton("Create"); |
||||
|
||||
public SessionCreateWindow() { |
||||
this.setTitle("Create Rabi-Race Session"); |
||||
this.setIconImage(sigIRC.programIcon); |
||||
this.setVisible(false); |
||||
JPanel namepanel = new JPanel(); |
||||
JPanel playerpanel = new JPanel(); |
||||
JPanel passwordpanel = new JPanel(); |
||||
|
||||
JPanel[] panel_list = new JPanel[]{ |
||||
namepanel,playerpanel,passwordpanel |
||||
}; |
||||
|
||||
for (JPanel panel : panel_list) { |
||||
panel.setLayout(new BoxLayout(panel,BoxLayout.LINE_AXIS)); |
||||
panel.setSize(400, 24); |
||||
panel.setMinimumSize(new Dimension(400, 24)); |
||||
panel.add(Box.createRigidArea(new Dimension(24,24))); |
||||
} |
||||
|
||||
JLabel nameLabel = new JLabel("Session Name: "); |
||||
String label = RabiRaceModule.module.myProfile.displayName+"'s Race"; |
||||
if (label.length()>16) { |
||||
label = "My Rabi-Race!"; |
||||
} |
||||
session_name.setText(label); |
||||
|
||||
namepanel.add(nameLabel); |
||||
namepanel.add(session_name); |
||||
|
||||
JLabel playerLabel = new JLabel("Max Players: "); |
||||
maxplayers.setText("4"); |
||||
|
||||
playerpanel.add(playerLabel); |
||||
playerpanel.add(maxplayers); |
||||
|
||||
JLabel passwordLabel = new JLabel("🔑 Password (Optional): "); |
||||
|
||||
playerpanel.add(passwordLabel); |
||||
playerpanel.add(pass); |
||||
|
||||
for (JPanel panel : panel_list) { |
||||
panel.add(Box.createRigidArea(new Dimension(24,24))); |
||||
} |
||||
|
||||
create.setSize(164,24); |
||||
create.setMinimumSize(new Dimension(164,24)); |
||||
create.addActionListener(new ActionListener(){ |
||||
@Override |
||||
public void actionPerformed(ActionEvent ev) { |
||||
if (session_name.getText().length()>session_name.length) { |
||||
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Your session name is too long!", "Error!", JOptionPane.WARNING_MESSAGE); |
||||
return; |
||||
} |
||||
if (session_name.getText().length()<=2) { |
||||
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Your session name is too short!", "Error!", JOptionPane.WARNING_MESSAGE); |
||||
return; |
||||
} |
||||
if (!TextUtils.isAlphanumeric(session_name.getText())) { |
||||
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Your session name has invalid characters! Only A-Z,0-9,!,-,.,? and spaces allowed!", "Error!", JOptionPane.WARNING_MESSAGE); |
||||
return; |
||||
} |
||||
if (!TextUtils.isInteger(maxplayers.getText(), 10)) { |
||||
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Your max player count is invalid!", "Error!", JOptionPane.WARNING_MESSAGE); |
||||
return; |
||||
} |
||||
if (Integer.parseInt(maxplayers.getText())>48 || Integer.parseInt(maxplayers.getText())<2) { |
||||
JOptionPane.showMessageDialog(RabiRaceModule.createwindow, "Your max player count needs to be between 2-48!", "Error!", JOptionPane.WARNING_MESSAGE); |
||||
return; |
||||
} |
||||
String hashpass = ""; |
||||
if (String.copyValueOf(pass.getPassword()).length()>0) { |
||||
hashpass = SessionListWindow.GetHashedPassword(String.copyValueOf(pass.getPassword())); |
||||
} |
||||
session_name.setText(session_name.getText().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="+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; |
||||
if (contents.length>=2) { |
||||
sessionID=Integer.parseInt(contents[0]); |
||||
} |
||||
if (sessionID!=-1) { |
||||
RabiRaceModule.module.getSessionList(); |
||||
//RabiRaceModule.module.session_listing.data.put(sessionID, new Session());
|
||||
Session session = RabiRaceModule.module.session_listing.data.get(sessionID); |
||||
SessionListWindow.ConnectToSession(session, hashpass); |
||||
setVisible(false); |
||||
} |
||||
//SessionListWindow.ConnectToSession(session, hashedPass);
|
||||
} catch (MalformedURLException e) { |
||||
e.printStackTrace(); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
}); |
||||
|
||||
//create.add(Box.createRigidArea(new Dimension(24,24)));
|
||||
|
||||
container.setLayout(new BoxLayout(container,BoxLayout.PAGE_AXIS)); |
||||
|
||||
container.add(Box.createRigidArea(new Dimension(24,24))); |
||||
container.add(namepanel); |
||||
container.add(playerpanel); |
||||
container.add(passwordpanel); |
||||
container.add(create); |
||||
container.add(Box.createRigidArea(new Dimension(24,24))); |
||||
|
||||
this.add(container); |
||||
this.setSize(400, 192); |
||||
this.setMinimumSize(new Dimension(400, 192)); |
||||
this.setMaximumSize(new Dimension(400, 192)); |
||||
this.setResizable(false); |
||||
} |
||||
|
||||
class LengthValidationField extends JTextField implements DocumentListener{ |
||||
int length = 10; |
||||
|
||||
public LengthValidationField(int maxLength) { |
||||
this.length = maxLength; |
||||
getDocument().addDocumentListener(this); |
||||
} |
||||
|
||||
@Override |
||||
public void changedUpdate(DocumentEvent arg0) { |
||||
} |
||||
|
||||
@Override |
||||
public void insertUpdate(DocumentEvent arg0) { |
||||
ValidateForm(); |
||||
} |
||||
|
||||
protected void ValidateForm() { |
||||
if (fieldIsInvalid()) { |
||||
setBackground(Color.RED); |
||||
} else { |
||||
setBackground(Color.WHITE); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void removeUpdate(DocumentEvent arg0) { |
||||
ValidateForm(); |
||||
} |
||||
|
||||
protected boolean fieldIsInvalid() { |
||||
return getText().length()>length || getText().length()<=2 || !TextUtils.isAlphanumeric(getText()); |
||||
} |
||||
} |
||||
|
||||
class NumberValidationField extends JTextField implements DocumentListener{ |
||||
|
||||
public NumberValidationField() { |
||||
getDocument().addDocumentListener(this); |
||||
} |
||||
|
||||
@Override |
||||
public void changedUpdate(DocumentEvent arg0) { |
||||
} |
||||
|
||||
@Override |
||||
public void insertUpdate(DocumentEvent arg0) { |
||||
ValidateForm(); |
||||
} |
||||
|
||||
protected void ValidateForm() { |
||||
if (fieldIsInvalid()) { |
||||
setBackground(Color.RED); |
||||
} else { |
||||
setBackground(Color.WHITE); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void removeUpdate(DocumentEvent arg0) { |
||||
ValidateForm(); |
||||
} |
||||
|
||||
protected boolean fieldIsInvalid() { |
||||
if (!TextUtils.isInteger(getText(), 10)) { |
||||
return true; |
||||
} |
||||
int val = Integer.parseInt(getText()); |
||||
if (val>48 || val<2) { |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
} |
||||
} |
@ -1,27 +1,28 @@ |
||||
package sig.modules.RabiRace; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
import java.util.HashMap; |
||||
|
||||
public class SessionListData { |
||||
List<Session> data = new ArrayList<Session>(); |
||||
HashMap<Integer,Session> data = new HashMap<Integer,Session>(); |
||||
|
||||
public SessionListData() { |
||||
|
||||
} |
||||
|
||||
public void UpdateData(String[] data) { |
||||
this.data.clear(); |
||||
//this.data.clear();
|
||||
for (String session : data) { |
||||
if (session.length()>0) { |
||||
//System.out.println("Adding session "+session);
|
||||
this.data.add(new Session(session)); |
||||
//this.data.add(new Session(session));
|
||||
int sessionID = Integer.parseInt(session.split(",")[0]); |
||||
this.data.put(sessionID, new Session(session)); |
||||
} |
||||
} |
||||
//System.out.println(this.data);
|
||||
} |
||||
|
||||
public List<Session> getSessions() { |
||||
public HashMap<Integer,Session> getSessions() { |
||||
return data; |
||||
} |
||||
} |
||||
|
Loading…
Reference in new issue