summaryrefslogtreecommitdiff
path: root/webapp/swiftstory-common.js
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/swiftstory-common.js')
-rw-r--r--webapp/swiftstory-common.js348
1 files changed, 0 insertions, 348 deletions
diff --git a/webapp/swiftstory-common.js b/webapp/swiftstory-common.js
deleted file mode 100644
index 174b473..0000000
--- a/webapp/swiftstory-common.js
+++ /dev/null
@@ -1,348 +0,0 @@
-var SwiftStory = function() {
- this.on_socket_open = function() { /* to override */ };
- this.on_socket_close = function() { /* to override */ };
- this.on_socket_error = function(evt) { /* to override */};
-
- this.on_join_game_ok = function(state) { /* to override */ };
- this.on_show_white_card = function(idx, desc) { /* to override */ };
- this.on_pick_black_card_ok = function() { /* to override */ };
- this.on_show_black_card = function(desc) { /* to override */ };
- this.on_play_white_card_ok = function(idx) { /* to override */ };
- this.on_collect_cards_ok = function() { /* to override */ };
- this.on_show_played_card = function(idx, desc) { /* to override */ };
- this.on_designate_card_ok = function(idx) { /* to override */ };
-
- this.on_judge_needed = function() { /* to override */ };
- this.on_judge_designed = function() { /* to override */ };
- this.on_player_joined_game = function() { /* to override */ };
- this.on_card_played = function() { /* to override */ };
- this.on_cards_collected = function() { /* to override */ };
- this.on_updated_score = function(new_score) { /* to override */ };
- this.on_change_state = function(state) { /* to override */ };
- this.on_change_nbr_played_cards = function(nbr) { /* to override */ };
-
- var request_queue = [];
-
- var judge = false;
-
- var self = this;
- var ws;
-
- var lang;
-
- var nbr_played_cards = 0;
-
- var played_cards = [];
- var white_cards = {};
- var black_card;
-
- var score = 0;
-
- var map_handle_response_ok = {};
- var map_handle_notif = {};
-
- this.set_lang = function(language) {
- lang = language;
- };
-
- this.is_judge = function() {
- return judge;
- };
-
- this.reset_nbr_played_cards = function() {
- nbr_played_cards = 0;
-
- self.on_change_nbr_played_cards(nbr_played_cards);
- };
-
- this.incr_nbr_played_cards = function() {
- ++nbr_played_cards;
-
- self.on_change_nbr_played_cards(nbr_played_cards);
- };
-
- this.get_white_card_event = function(idx) {
- return white_cards[idx]['event'];
- };
-
- this.get_played_card_event = function(idx) {
- return played_cards[idx]['event'];
- };
-
- this.change_state = function(state) {
- game_state = state;
-
- switch (state) {
- case 'waiting_judge':
- played_cards = [];
- self.reset_nbr_played_cards();
- judge = false;
-
- self.on_judge_needed();
-
- break;
- case 'waiting_collection':
- break;
- case 'waiting_designation':
- break;
- }
-
- this.on_change_state(state);
- };
-
- /* map_handle_response_ok {{{ */
-
- map_handle_response_ok['join_game'] = function(result) {
- self.on_join_game_ok();
-
- self.change_state(result['game_state']);
-
- map_handle_response_ok['view_player_cards'](result);
- };
-
- map_handle_response_ok['view_player_cards'] = function(result) {
- for (var i in result['cards']) {
- var idx = result['cards'][i][0];
- var desc = result['cards'][i][1];
-
- white_cards[idx] = {
- 'desc': desc,
- 'event': self.gen_callback_white_card(idx)
- };
-
- self.on_show_white_card(idx, desc)
- }
- };
-
- map_handle_response_ok['pick_black_card'] = function(result) {
- judge = true;
- self.change_state('waiting_collection');
-
- self.on_pick_black_card_ok();
- map_handle_response_ok['view_black_card'](result);
- };
-
- map_handle_response_ok['view_black_card'] = function(result) {
- black_card = result;
- self.on_show_black_card(black_card);
- };
-
- map_handle_response_ok['play_white_card'] = function(result) {
- idx = result['card_id'];
-
- self.on_play_white_card_ok(idx);
-
- delete white_cards[idx];
- };
-
- map_handle_response_ok['collect_cards'] = function(result) {
- self.change_state('waiting_designation');
-
- self.on_collect_cards_ok();
- map_handle_response_ok['view_played_cards'](result);
- };
-
- map_handle_response_ok['view_played_cards'] = function(result) {
- for (var i in result) {
- var desc = result[i];
-
- played_cards.push({
- 'desc': desc,
- 'event': self.gen_callback_played_card(i),
- });
- self.on_show_played_card(i, desc);
- }
-
- if (!result.length) {
- self.gen_callback_played_card(null)();
- }
- };
-
- map_handle_response_ok['designate_card'] = function(result) {
- self.change_state('waiting_judge');
-
- self.on_designate_card_ok();
- };
-
- /* }}} */
- /* handle_notif {{{ */
-
- map_handle_notif['judge_designed'] = function(result) {
- self.change_state('waiting_collection');
-
- self.on_judge_designed();
- };
-
- map_handle_notif['received_card'] = function(result) {
- var idx = result['card']['id'];
- var desc = result['card']['desc'];
-
- white_cards[idx] = {
- 'desc': desc,
- 'event': self.gen_callback_white_card(idx)
- };
-
- self.on_show_white_card(idx, desc);
- };
-
- map_handle_notif['judge_needed'] = function(result) {
- self.change_state('waiting_judge');
- };
-
- map_handle_notif['player_joined_game'] = function(result) {
- self.on_player_joined_game();
- };
-
- map_handle_notif['card_played'] = function(result) {
- self.incr_nbr_played_cards();
-
- self.on_card_played();
- };
-
- map_handle_notif['cards_collected'] = function(result) {
- self.change_state('waiting_designation');
-
- self.on_cards_collected();
- };
-
- map_handle_notif['updated_score'] = function(result) {
- self.score = result;
-
- self.on_updated_score(self.score);
- };
-
- /* }}} */
-
- this.run = function() {
- ws = new WebSocket('ws://' + document.location.hostname + ':1236');
-
- ws.onopen = function() {
- console.log('connection established');
- self.on_socket_open();
- };
-
- ws.onclose = function() {
- self.on_socket_close();
- };
-
- ws.onmessage = function(evt) {
- var message = JSON.parse(evt.data);
-
- if (message['type'] == 'notification') {
- handle_notif(message['content']);
- } else {
- handle_response(message['content']);
- }
- };
-
- ws.onerror = function(evt) {
- console.log(evt);
- self.on_socket_error(evt);
- };
-
- };
-
- var handle_notif = function(notif) {
- if (map_handle_notif[notif['op']]) {
- map_handle_notif[notif['op']](notif['content']);
- } else {
- console.log('unhandled notif ' + notif);
- }
- };
-
- var handle_response = function(response) {
- var rq = request_queue.shift();
-
- if (response['status'] != 0) {
- alert(response['info']);
- return;
- }
-
- if (map_handle_response_ok[rq]) {
- map_handle_response_ok[rq](response['result'])
- } else {
- console.log(evt);
- }
- };
-
- this.gen_callback_white_card = function(index) {
- return function() {
- var request = {
- 'op': 'play_white_card',
- 'card_id': index,
- };
-
- request_queue.push('play_white_card');
- ws.send(JSON.stringify(request));
- };
- };
-
- this.gen_callback_played_card = function(index) {
- return function() {
- var request = {
- 'op': 'designate_card',
- 'card_id': index,
- };
-
- request_queue.push('designate_card');
- ws.send(JSON.stringify(request));
- };
- };
-
- this.join_game = function(game_name) {
- var request = {
- 'op': 'join_game',
- 'game_name': game_name,
- 'lang': lang,
- };
- request_queue.push('join_game');
- ws.send(JSON.stringify(request));
- };
-
- this.pick_black_card = function() {
- var request = {
- 'op': 'pick_black_card',
- };
- request_queue.push('pick_black_card');
- ws.send(JSON.stringify(request));
- };
-
- this.collect_cards = function() {
- var request = {
- 'op': 'collect_cards',
- };
- request_queue.push('collect_cards');
- ws.send(JSON.stringify(request));
- };
-
- this.request_show_cards = function() {
- var request = {
- 'op': 'view_player_cards',
- };
-
- request_queue.push('view_player_cards');
- ws.send(JSON.stringify(request));
- };
- this.request_show_black_card = function() {
- var request = {
- 'op': 'view_black_card',
- };
-
- request_queue.push('view_black_card');
- ws.send(JSON.stringify(request));
- };
- this.request_show_played_cards = function() {
- var request = {
- 'op': 'view_played_cards',
- };
-
- request_queue.push('view_played_cards');
- ws.send(JSON.stringify(request));
- };
-};
-
-var swst;
-
-$(document).ready(function() {
- swst = new SwiftStory();
-});