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; |
package sig.modules.RabiRace; |
||||||
|
|
||||||
import java.util.ArrayList; |
import java.util.HashMap; |
||||||
import java.util.List; |
|
||||||
|
|
||||||
public class SessionListData { |
public class SessionListData { |
||||||
List<Session> data = new ArrayList<Session>(); |
HashMap<Integer,Session> data = new HashMap<Integer,Session>(); |
||||||
|
|
||||||
public SessionListData() { |
public SessionListData() { |
||||||
|
|
||||||
} |
} |
||||||
|
|
||||||
public void UpdateData(String[] data) { |
public void UpdateData(String[] data) { |
||||||
this.data.clear(); |
//this.data.clear();
|
||||||
for (String session : data) { |
for (String session : data) { |
||||||
if (session.length()>0) { |
if (session.length()>0) { |
||||||
//System.out.println("Adding session "+session);
|
//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);
|
//System.out.println(this.data);
|
||||||
} |
} |
||||||
|
|
||||||
public List<Session> getSessions() { |
public HashMap<Integer,Session> getSessions() { |
||||||
return data; |
return data; |
||||||
} |
} |
||||||
} |
} |
||||||
|
Loading…
Reference in new issue