summaryrefslogtreecommitdiff
path: root/src/main/resources/static/app.js
blob: 2b6b160b466f885b596be693ba7aaf475ee97edf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
var stompClient = null;

function setConnected(connected) {
  $("#connect").prop("disabled", connected);
  $("#disconnect").prop("disabled", !connected);
  if (connected) {
    $("#game-list").show();
  } else {
    $("#game-list").hide();
  }
  $("#greetings").html("");
}

function connect() {
  var socket = new SockJS('/seven-wonders-websocket');
  stompClient = Stomp.over(socket);
  stompClient.connect({}, function (frame) {
    setConnected(true);
    console.log('Connected: ' + frame);

    stompClient.subscribe('/user/queue/errors', function (msg) {
      var error = JSON.parse(msg.body);
      console.error(error);
    });

    stompClient.subscribe('/topic/games', function (msg) {
      var game = JSON.parse(msg.body);
      if (Array.isArray(game)) {
        console.log("Received new games: " + game);
        for (var i = 0; i < game.length; i++) {
          addNewGame(game[i]);
        }
      } else {
        console.log("Received new game: " + game);
        addNewGame(game);
      }
    });

    stompClient.subscribe('/user/queue/join-game', function (msg) {
      var game = JSON.parse(msg.body);
      console.log("Joined game: " + game);
      addNewPlayer(game);
    });
  });
}

function disconnect() {
  if (stompClient != null) {
    stompClient.disconnect();
  }
  setConnected(false);
  console.log("Disconnected");
}

function sendCreateGame(gameName, playerName) {
  stompClient.send("/app/lobby/create-game", {}, JSON.stringify({
    'gameName': gameName,
    'playerName': playerName
  }));
}

function sendJoinGame(gameName, playerName) {
  stompClient.send("/app/lobby/join-game", {}, JSON.stringify({
    'gameName': gameName,
    'playerName': playerName
  }));
}

function addNewGame(game) {
  console.log(game);
  $("#game-list-content").append('<tr><td>' + game.name + '</td><td><button id="join-' + game.id +
          '" type="submit">Join</button></td></tr>');
  $("#join-" + game.id).click(function () {
    sendJoinGame(game.name, $("#player-name-field").val());
  });
}

function addNewPlayer(player) {
  console.log(player);
}

$(function () {
  $("form").on('submit', function (e) {
    e.preventDefault();
  });
  $("#connect").click(function () {
    connect();
  });
  $("#disconnect").click(function () {
    disconnect();
  });
  $("#create-game").click(function () {
    sendCreateGame($("#game-name-field").val(), $("#player-name-field").val());
  });
});
bgstack15