Explorar el Código

Matchmaking state. BROKEN

Kenneth van Ewijk hace 10 años
padre
commit
131817aafb

+ 4 - 0
server/server/match/Match.java

@@ -68,6 +68,10 @@ public class Match implements Runnable {
 		if (currentlevel >= 0 && currentlevel < levels.size()) {
 			return levels.get(currentlevel);
 		}
+		else
+		{
+			stopMatch();
+		}
 		return null;
 	}
 

+ 11 - 0
src/model/GameStateManager.java

@@ -6,6 +6,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import model.state.EndState;
+import model.state.MatchMakingState;
 import model.state.MenuState;
 import model.state.PlayState;
 import model.state.State;
@@ -21,6 +22,7 @@ public class GameStateManager {
 		gamestates.add(new MenuState(this));
 		gamestates.add(new PlayState(this));
 		gamestates.add(new EndState(this));
+		gamestates.add(new MatchMakingState(this));
 
 		currentState = gamestates.get(0);
 	}
@@ -33,6 +35,15 @@ public class GameStateManager {
 			}
 		}
 	}
+	
+	public State getState(String name) {
+		for (State s : gamestates) {
+			if (s.getName() == name) {
+				return s;
+			}
+		}
+		return null;
+	}
 
 	private void changeState(State st) {
 		if (!currentState.equals(st)) {

+ 10 - 1
src/model/NetworkConnection.java

@@ -99,5 +99,14 @@ public class NetworkConnection {
 
 		}
 	}
-
+	
+	public void close()
+	{
+		try {
+			din.close();
+			dout.close();
+		} catch (IOException e) {
+		}
+		receivethread.stop();
+	}
 }

+ 88 - 0
src/model/state/MatchMakingState.java

@@ -0,0 +1,88 @@
+package model.state;
+
+import java.awt.Graphics2D;
+import java.awt.event.KeyEvent;
+import java.io.IOException;
+import java.net.UnknownHostException;
+
+import model.GameStateManager;
+import model.NetworkConnection;
+
+public class MatchMakingState extends State {
+	
+	public static NetworkConnection nwc = null;
+	boolean failed = false;
+	boolean draw = false;
+	String message = "";
+
+	public MatchMakingState(GameStateManager gsm) {
+		super("match", gsm);
+	}
+
+	@Override
+	public void init() {
+		if(!draw)
+			return;
+		
+		nwc = new NetworkConnection((PlayState) gsm.getState("play"));
+			try {
+				nwc.connect(MenuState.name);
+			} catch (UnknownHostException e) {
+				failed = true;
+				message = "Server is offline";
+			} catch (IOException e) {
+				failed = true;
+				message  = "Something went wrong while trying to connect";
+			}
+			failed = false;
+			message = "";
+			
+			if(!failed)
+				gsm.setState("play");
+	}
+
+	@Override
+	public void exit() {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public void update() {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public void paint(Graphics2D g2) {
+		g2.drawString("Waiting on match", 100, 100);
+		
+		if(failed)
+		{
+			g2.drawString(message, 100, 300);
+			g2.drawString("Press any key to continue", 100, 500);
+		}
+		
+		draw = true;
+		init();
+	}
+
+	@Override
+	public void keyPressed(KeyEvent e) {
+		if(failed)
+			gsm.setState("menu");
+	}
+
+	@Override
+	public void keyReleased(KeyEvent e) {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public void keyTyped(KeyEvent e) {
+		// TODO Auto-generated method stub
+
+	}
+
+}

+ 1 - 1
src/model/state/MenuState.java

@@ -58,7 +58,7 @@ public class MenuState extends State {
 	@Override
 	public void keyPressed(KeyEvent e) {
 		if (e.getKeyCode() == KeyEvent.VK_ENTER) {
-			gsm.setState("play");
+			gsm.setState("match");
 		}
 		
 		if(e.getKeyCode() == KeyEvent.VK_BACK_SPACE && name.length() > 0)

+ 1 - 6
src/model/state/PlayState.java

@@ -44,12 +44,7 @@ public class PlayState extends State {
 	/* INIT AND EXIT */
 	@Override
 	public void init() {
-		nwc = new NetworkConnection(this);
-		try {
-			nwc.connect(MenuState.name);
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
+		nwc = MatchMakingState.nwc;
 	}
 
 	@Override