123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137 |
- var $ = function(_undefind) {
- function Selector(elements) {
- this.length = elements.length;
- for (var i = 0, l = this.length; l > i; i++) this[i] = elements[i];
- }
- function $(selector) {
- return tag.test(selector) ? new Selector([ document.createElementNS("http://www.w3.org/2000/svg", tag.exec(selector)[1]) ]) : "string" == typeof selector ? new Selector(document.querySelectorAll(selector)) : selector instanceof NodeList ? new Selector(selector) : selector instanceof Element ? new Selector([ selector ]) : selector.addEventListener ? new Selector([ selector ]) : selector instanceof Selector ? selector : new Selector([]);
- }
- var fn = Selector.prototype;
- fn.each = function(callback) {
- for (var i = 0, l = this.length; l > i; i++) callback(this[i], i);
- return this;
- }, fn.on = function(eventName, eventHandler) {
- return this.each(function(el) {
- el.addEventListener(eventName, eventHandler);
- });
- }, fn.off = function(eventName, eventHandler) {
- return this.each(function(el) {
- el.removeEventListener(eventName, eventHandler);
- });
- }, fn.trigger = function(eventName, data) {
- return this.each(function(el) {
- event = new CustomEvent(eventName, data), el.dispatchEvent(event);
- });
- }, fn.css = function(name, value) {
- if (Object(name) === name) {
- for (var prop in name) this.css(prop, name[prop]);
- return this;
- }
- return null != value ? this.each(function(el) {
- el.style[name] = value;
- }) : this.length ? getComputedStyle(this[0]).getPropertyValue(name) : _undefind;
- }, fn.show = function() {
- return this.css("display", "block");
- }, fn.hide = function() {
- return this.css("display", "none");
- }, fn.text = function(text) {
- return null != text ? this.each(function(el) {
- el.textContent = text;
- }) : this.length ? this[0].textContent : _undefind;
- }, fn.html = function(html) {
- return null != html ? this.each(function(el) {
- for (;el.firstChild; ) el.removeChild(el.firstChild);
- var fragment = document.createElement("div");
- fragment.innerHTML = "<svg>" + html + "</svg>";
- for (var svg = fragment.firstChild, node = svg.firstChild; node; ) el.appendChild(node.cloneNode(!0)),
- node = node.nextSibling;
- }) : this.length ? this[0].innerHTML : _undefind;
- }, fn.remove = function() {
- return this.each(function(el) {
- el.parentNode && el.parentNode.removeChild(el);
- });
- }, fn.attr = function(name, value) {
- if (Object(name) === name) {
- for (var prop in name) this.attr(prop, name[prop]);
- return this;
- }
- return null != value ? this.each(function(el) {
- el.setAttribute(name, value);
- }) : this.length ? this[0].getAttribute(name) : _undefind;
- }, fn.removeAttr = function(name) {
- return this.each(function(el) {
- el.removeAttribute(name);
- });
- }, fn.append = function(target) {
- return this.each(function(el) {
- target instanceof Selector ? target.each(function(child) {
- el.appendChild(child);
- }) : el.appendChild(target);
- });
- }, fn.empty = function() {
- return this.each(function(el) {
- for (;el.firstChild; ) el.removeChild(el.firstChild);
- });
- }, fn.eq = function(idx) {
- return new Selector(idx >= this.length ? [] : [ this[idx] ]);
- }, fn.find = function(selector) {
- var result = [];
- return this.each(function(el) {
- Array.prototype.push.apply(result, el.querySelectorAll(selector));
- }), new Selector(result);
- }, fn.parent = function() {
- var result = [];
- return this.each(function(el) {
- result.push(el.parentNode);
- }), new Selector(result);
- }, fn.first = function() {
- return new Selector(this.length ? [ this[0] ] : []);
- }, fn.last = function() {
- return new Selector(this.length ? [ this[this.length - 1] ] : []);
- }, fn.clone = function() {
- var result = [];
- return this.each(function(el) {
- result.push(el.cloneNode(!0));
- }), new Selector(result);
- }, fn.width = function() {
- return this.length ? this[0].getBoundingClientRect().width : _undefind;
- }, fn.height = function() {
- return this.length ? this[0].getBoundingClientRect().height : _undefind;
- }, fn.position = function() {
- if (this.length) {
- var clientRect = this[0].getBoundingClientRect();
- return {
- top: clientRect.top,
- right: clientRect.right,
- bottom: clientRect.bottom,
- left: clientRect.left
- };
- }
- return _undefind;
- };
- var defaultAnim = {
- "class": "anim",
- begin: "indefinite"
- }, anim = function(anim) {
- return $("<animate/>").attr(anim);
- };
- fn.animate = function(anims) {
- var callbacks = [], thenable = {
- then: function(complete) {
- return callbacks.push(complete), thenable;
- }
- };
- return anims = $.extend({}, defaultAnim, anims), this.each(function(el) {
- var $el = $(el), $anim = $el.find(".anim");
- $anim.length ? $anim.attr(anims) : ($el.append(anim(anims)[0]), $anim = $el.find(".anim")),
- el.timerId = setTimeout(function() {
- $el.attr(anims.attributeName, anims.to), $el.removeAttr("animated"), callbacks.forEach(function(c) {
- c();
- }), callbacks = [];
- }, 1e3 * parseFloat(anims.dur)), $el.attr("animated", !0), $anim[0].beginElement();
- }), thenable;
- };
- var animDelay = 62.5;
- fn.move = function(anims) {
- return this.each(function(el) {
- function tick() {
- if (!el.paused) {
- var cur = from + step;
- (to > from ? to >= cur : cur >= to) ? ($el.attr(property, cur), from = cur) : clearInterval(timer);
- }
- }
- var property = anims.attributeName, dur = anims.dur, to = parseInt(anims.to), $el = $(el), from = parseInt($el.attr(property)), step = (to - from) / (1e3 * dur / animDelay);
- el.timer = setInterval(tick, animDelay);
- });
- };
- var defaultTrf = {
- "class": "trf",
- type: "translate",
- dur: "0.3",
- calcMode: "spline",
- keySplines: "0.215 0.61 0.355 1",
- additive: "replace",
- attributeName: "transform",
- begin: "indefinite",
- keyTimes: "0; 1"
- }, trf = function(trf) {
- return $("<animateTransform/>").attr(trf);
- };
- fn.transform = function(trfs) {
- var callbacks = [], thenable = {
- then: function(complete) {
- return callbacks.push(complete), thenable;
- }
- };
- return trfs = $.extend({}, defaultTrf, trfs), this.each(function(el) {
- var $el = $(el), $anim = $el.find(".trf");
- $anim.length ? $anim.attr(trfs) : ($el.append(trf(trfs)[0]), $anim = $el.find(".trf")),
- el.timerId = setTimeout(function() {
- $el.attr("transform", trfs.type + "(" + trfs.to + ")"), $el.removeAttr("animated"),
- callbacks.forEach(function(c) {
- c();
- }), callbacks = [];
- }, 1e3 * parseFloat(trfs.dur) - 20), $el.attr("animated", !0), $anim[0].beginElement();
- }), thenable;
- }, fn.stop = function() {
- return this.each(function(el) {
- $(el).find(".anim, .trf").each(function(anim) {
- anim.endElement();
- }), clearTimeout(el.timerId), clearInterval(el.timer);
- });
- }, fn.pause = function() {
- return $("svg")[0].pauseAnimations(), this.each(function(el) {
- el.paused = !0;
- });
- }, fn.resume = function() {
- return $("svg")[0].unpauseAnimations(), this.each(function(el) {
- el.paused = !1;
- });
- };
- var tag = /^<(.+)\/>$/;
- return $.extend = function(target) {
- for (var obj, properties, i = 1, l = arguments.length; l > i; i++) {
- obj = arguments[i], properties = Object.keys(obj);
- for (var property, j = properties.length; j--; ) property = properties[j], target[property] = obj[property];
- }
- return target;
- }, $.inherit = function(child, parent) {
- function ctor() {
- this.constructor = child, this.__super__ = parent.prototype;
- }
- return ctor.prototype = parent.prototype, child.prototype = new ctor(), child;
- }, $.mixin = function(plagin) {
- $.extend(fn, plagin);
- }, $.timestamp = 1400668550599, $.load = function(url, complete) {
- url = url + "?q=" + $.timestamp;
- var result = localStorage.getItem(url);
- if (null == result) {
- var xhr = new XMLHttpRequest();
- xhr.open("GET", url, !0), xhr.onload = function() {
- localStorage.setItem(url, xhr.responseText), complete(xhr.responseText);
- }, xhr.send();
- } else complete(result);
- }, $.rand = function(min, max) {
- return min + Math.floor(Math.random() * (max - min + 1));
- }, $;
- }(),
- Core = function() {
- var scope = {
- apiUrl: "ws://srv5.kakaranet.com:8080/ws/",
- gameId: 1000001,
- defaultSessionId: "7hc6Vl0CpxvngjiQQWDspxUtKmhF1zCbT155+M73XhFcKw9e6jkNWLSLM8up4ZQbSUGJXKOphb0YNu4yDRKZkbkiyY1yZukqXFj4nAfvSUNuWx0352VWfLlKZWldHb1na7d7sA==",
- CARD_SOURCE: "svg/card.svg",
- CARD_SMALL_SOURCE: "svg/card-small.svg",
- CARD_COLORS: [ "#CE290F", "#3B5998", "#48AF5E", "#F8E81C" ],
- SKIN_NAMES: [ "alina", "gabrielo", "mustafa" ]
- };
- return function(module) {
- module(scope);
- };
- }();
- Core(function(scope) {
- function Controller() {
- this.proxyAll(), this.refreshElements();
- }
- var isIE = window.navigator.msPointerEnabled;
- $.extend(Controller.prototype, {
- proxy: function(func) {
- return func.bind(this);
- },
- proxyAll: function() {
- if (this.proxies) for (var method, i = this.proxies.length; i--; ) method = this.proxies[i],
- this[method] = this.proxy(this[method]);
- },
- withDelay: function(func, timeout) {
- return setTimeout(this.proxy(func), timeout || 0);
- },
- $: function(selector) {
- return this.$el.find(selector);
- },
- refreshElements: function() {
- if (this.elements) for (var element in this.elements) this[element] = this.$(this.elements[element]);
- },
- on: function(eventType, handler) {
- return this.$el.on(eventType, handler), this;
- },
- off: function(eventType, handler) {
- return this.$el.off(eventType, handler), this;
- },
- clientX: function(e) {
- return isIE ? e.pageX : document.createTouch ? e.changedTouches[0].clientX : e.clientX;
- },
- clientY: function(e) {
- return isIE ? e.pageY : document.createTouch ? e.changedTouches[0].clientY : e.clientY;
- },
- intersect: function(x, y) {
- var pos = this.$el.position();
- return pos.top < y && pos.bottom > y && pos.left < x && pos.right > x;
- }
- }), scope.Controller = Controller;
- }),
- Core(function(scope) {
- function ApiProvider(options) {
- options = options || {}, this.url = options.url, this.sessionId = options.sessionId,
- this.gameId = options.gameId, this.proxies = [ "init", "handleMessage", "actionTake" ],
- this.proxyAll(), this.socket = new WebSocket(this.url), this.$socket = $(this.socket),
- this.$socket.on("open", this.init), this.$socket.on("message", this.handleMessage);
- }
- var eventMap = [ "okey_game_info", "okey_game_started", "okey_game_player_state", "okey_next_turn", "okey_tile_discarded", "okey_tile_taken", "okey_revealed", "player_left", "game_paused" ],
- session = /\('session_attach'\),'([^)]+)'\)/,
- userName = /document.user\s?=\s?'([^']+)'/;
- $.extend(ApiProvider.prototype, {
- proxy: function(func) {
- return func.bind(this);
- },
- proxyAll: function() {
- if (this.proxies) for (var method, i = this.proxies.length; i--; ) method = this.proxies[i],
- this[method] = this.proxy(this[method]);
- },
- on: function(eventType, handler) {
- this.$socket.on(eventType, handler);
- },
- off: function(eventType, handler) {
- this.$socket.off(eventType, handler);
- },
- init: function() {
- this.socket.send([ "N2O", "" ]), setInterval(this.proxy(function() {
- this.socket.send("PING");
- }), 4e3);
- },
- handleMessage: function(e) {
- var msg = JSON.parse(e.data);
- if (msg.eval) {
- var curSession, user;
- (curSession = session.exec(msg.eval)) && (this.sessionId = curSession[1]), (user = userName.exec(msg.eval)) && (scope.user = user[1]);
- }
- msg.data ? (msg = dec(msg.data), this.emitEvent(this.beutify(this.parse(msg)))) : msg.eval && (this.socket.send(enc(tuple(atom("client"), tuple(atom("session_attach"), this.sessionId)))),
- this.socket.send(enc(tuple(atom("client"), tuple(atom("join_game"), this.gameId)))));
- },
- parse: function(msg) {
- if (Array.isArray(msg)) {
- if (msg.every(function(el, i) {
- return i % 2 == 0 || Object(el.value) === el.value;
- }) || msg.length % 2 != 0) {
- for (var result = [], i = 0, l = msg.length; l > i; i++) result.push(this.parse(msg[i]));
- return result;
- }
- if (msg.length > 2 && msg.every(function(el) {
- return null != el && "object" != typeof el || null != el.value && "object" != typeof el.value;
- })) {
- var result = {};
- return result[this.parse(msg[0])] = this.parse(msg.slice(1)), result;
- }
- for (var result = {}, i = 0, l = msg.length; l > i; i += 2) {
- {
- this.parse(msg[i]);
- }
- result[this.parse(msg[i])] = this.parse(msg[i + 1]);
- }
- return result;
- }
- return msg.value && Object(msg.value) === msg.value && msg.value[0] && msg.value.length ? this.parse(msg.value[0]) : null != msg.value ? msg.value : msg;
- },
- beutify: function(msg) {
- var result = {};
- for (var prop in msg) {
- var tempObj = msg[prop];
- if (Array.isArray(tempObj)) {
- for (var obj, i = tempObj.length; i--; ) if (obj = tempObj[i], Array.isArray(obj)) result[obj[0]] = obj[1]; else if (Object(obj) === obj) for (var p in obj) result[p] = obj[p]; else result[i] = obj;
- msg[prop] = result;
- }
- }
- return msg;
- },
- emitEvent: function(msg) {
- for (var event, i = eventMap.length; i--; ) event = eventMap[i], msg[event] && this.$socket.trigger(event, {
- detail: msg[event]
- });
- },
- actionTake: function(card) {
- var from = null != card.value ? 1 : 0;
- this.socket.send(enc(tuple(atom("client"), tuple(atom("game_action"), this.gameId, atom("okey_take"), {
- pile: from
- }))));
- },
- actionDiscard: function(card) {
- this.socket.send(enc(tuple(atom("client"), tuple(atom("game_action"), this.gameId, atom("okey_discard"), {
- tile: tuple(atom("OkeyPiece"), scope.CARD_COLORS.indexOf(card.color) + 1, card.value)
- }))));
- },
- reveal: function(card, hand) {
- this.socket.send(enc(tuple(atom("client"), tuple(atom("game_action"), this.gameId, atom("okey_reveal"), {
- discarded: tuple(atom("OkeyPiece"), scope.CARD_COLORS.indexOf(card.color) + 1, card.value),
- hand: hand
- }))));
- },
- pause: function(resume) {
- this.socket.send(enc(tuple(atom("client"), tuple(atom("pause_game"), atom("undefined"), this.gameId, atom(resume ? "resume" : "pause")))));
- }
- }), scope.ApiProvider = ApiProvider;
- }),
- Core(function(scope) {
- function culcShift() {
- sizeX = $svg[0].viewBox.baseVal.width / innerWidth, sizeY = $svg[0].viewBox.baseVal.height / innerHeight,
- size = Math.max(sizeX, sizeY) || 1;
- }
- function Draggable(root, options) {
- options = options || {}, this.$el = $(root), this.revert = options.revert, this.elements = {},
- this.proxies = [ "onDown", "onMove", "onUp" ], this.__super__.constructor.call(this),
- this.enable();
- }
- var sizeX, sizeY, size, moved, $svg = $("svg");
- culcShift(), $(window).on("resize", culcShift), $(window).on("orientationchange", culcShift),
- $.inherit(Draggable, scope.Controller), $.extend(Draggable.prototype, {
- storeTrf: function() {
- var trf = this.$el.attr("transform");
- this.initTrf = trf ? trf.slice(10, -1).split(/\s+/) : [ 0, 0 ];
- },
- disable: function() {
- this.$el.off(document.createTouch ? "touchstart" : "mousedown", this.onDown), this.$el.css({
- cursor: "default"
- });
- },
- enable: function() {
- this.$el.on(document.createTouch ? "touchstart" : "mousedown", this.onDown), this.$el.attr("style", "cursor: -moz-grab; cursor: -webkit-grab; cursor: grab;");
- },
- onDown: function(e, silent) {
- e.preventDefault(), moved || (moved = !1, this.$el.attr("style", "cursor: -moz-grabbing; cursor: -webkit-grabbing; cursor: grabbing;"),
- this.$el[0].parentNode.appendChild(this.$el[0]), this.x = this.clientX(e), this.y = this.clientY(e),
- this.trf = this.$el.attr("transform"), this.trf && (this.trf = this.trf.slice(10, -1).split(/\s+/)),
- this.storeTrf(), silent || (document.createTouch ? (this.$el.on("touchmove", this.onMove),
- this.$el.on("touchend", this.onUp)) : ($("body").on("mousemove", this.onMove), $("body").on("mouseup", this.onUp)),
- this.$el.trigger("dragstart")));
- },
- onMove: function(e, silent) {
- e.preventDefault(), moved = !0, this.dx = ((this.curX = this.clientX(e)) - this.x) * size,
- this.dy = ((this.curY = this.clientY(e)) - this.y) * size, this.trf && (this.dx += 0 | this.trf[0],
- this.dy += 0 | this.trf[1]), this.$el.attr("transform", "translate(" + this.dx + " " + this.dy + ")"),
- silent || this.$el.trigger("dragmove", {
- detail: {
- x: this.curX,
- y: this.curY,
- event: e
- }
- });
- },
- onUp: function(e, silent) {
- if (e.preventDefault(), this.$el.attr("style", "cursor: -moz-grab; cursor: -webkit-grab; cursor: grab;"),
- moved) {
- for (var droped, item, dropList = scope.Droppable.list, i = 0, l = dropList.length; l > i; i++) if (item = dropList[i],
- item.intersect(this.curX, this.curY)) {
- droped = item.drop(this, this.curX, this.curY);
- break;
- }
- droped || (this.$el.transform({
- from: [ this.dx, this.dy ].join(" "),
- to: this.initTrf.join(" ")
- }), silent || this.$el.trigger("revert")), silent || this.$el.trigger("dragstop", {
- detail: {
- x: this.curX,
- y: this.curY,
- event: e
- }
- }), moved = !1;
- }
- document.createTouch ? (this.$el.off("touchmove", this.onMove), this.$el.off("touchend", this.onUp)) : ($("body").off("mousemove", this.onMove),
- $("body").off("mouseup", this.onUp));
- }
- }),
- scope.Draggable = Draggable,
- $.mixin({
- draggable: function() {
- return this.each(function(el) {
- new Draggable(el);
- });
- }
- });
- }),
- Core(function(scope) {
- function Droppable(root, options) {
- options = options || {}, this.$el = $(root), this.accept = options.accept || function() {
- return !0;
- }, this.onDrop = options.drop || function() {}, this.elements = {}, this.proxies = [],
- this.__super__.constructor.call(this), this.activate();
- }
- Droppable.list = [], $.inherit(Droppable, scope.Controller), $.extend(Droppable.prototype, {
- drop: function(target, x, y) {
- return this.accept(target, x, y) ? (this.onDrop(target, x, y), !0) : !1;
- },
- activate: function() {
- Droppable.list.push(this);
- },
- release: function() {
- var i;
- ~(i = Droppable.list.indexOf(this)) && Droppable.list.splice(i, 1);
- }
- }),
- scope.Droppable = Droppable,
- $.mixin({
- droppable: function(options) {
- return this.each(function(el) {
- new Droppable(el, options);
- });
- }
- });
- }),
- Core(function(scope) {
- function Timer(root, options) {
- options = options || {}, this.duration = options.duration, this.curTime = this.duration,
- this.$el = $(root), this.elements = {
- $value: "#value",
- $progress: "#progress"
- }, this.proxies = [ "tick" ], this.__super__.constructor.call(this), this.$value.text(this.duration),
- defHeight = this.$progress.attr("height");
- }
- var defHeight;
- $.inherit(Timer, scope.Controller), $.extend(Timer.prototype, {
- from: function(time) {
- this.$value.text(this.curTime = Math.round(time / 1e3));
- },
- start: function() {
- this.$progress.move({
- attributeName: "height",
- to: "0",
- dur: this.curTime
- }), this.timerId = this.withDelay(this.tick, 1e3);
- },
- tick: function() {
- return this.paused ? void (this.timerId = this.withDelay(this.tick, 1e3)) : void (this.curTime-- > 0 && (this.$value.text(this.curTime),
- this.timerId = this.withDelay(this.tick, 1e3)));
- },
- reset: function() {
- this.$progress.stop().attr({
- height: defHeight
- }), this.$value.text(this.curTime = this.duration), clearTimeout(this.timerId);
- },
- pause: function() {
- this.paused = !0, this.$progress.pause();
- },
- resume: function() {
- this.paused = !1, this.$progress.resume();
- }
- }),
- scope.Timer = Timer;
- }),
- Core(function(scope) {
- function Player(options) {
- options = options || {}, this.name = options.name, this.position = options.position,
- this.noSkin = options.noSkin, this.skin = options.skin || scope.SKIN_NAMES[$.rand(0, scope.SKIN_NAMES.length - 1)],
- this.$el = $("#player-" + this.position), this.elements = {
- $timer: "#timer",
- $name: "#name",
- $nameWrapper: "#name rect",
- $nameText: "#name text"
- }, this.proxies = [ "loadSkin" ], this.__super__.constructor.call(this), this.$el.show(),
- this.$timer.hide(), this.$name.show(), this.$nameText.text(this.name);
- var nameWrapperWidth = this.$nameText.width() / $("#Page-1").width() * 100 + 2 * (this.$nameText.position().left - this.$nameWrapper.position().left) / $("#Page-1").width() * 100;
- this.$nameWrapper.attr({
- width: nameWrapperWidth + "%"
- }), this.initTimer(), "me" == this.position || this.noSkin || $.load("svg/" + [ "person", this.position, this.skin ].join("-") + ".svg", this.loadSkin);
- }
- $.inherit(Player, scope.Controller), $.extend(Player.prototype, {
- loadSkin: function(result) {
- var $result = $("<g/>").html(result);
- this.$el.append($result[0].firstChild), this.unselect();
- },
- initTimer: function() {
- this.timer = new scope.Timer(this.$timer, {
- duration: 30
- });
- },
- select: function() {
- this.$nameWrapper.attr({
- fill: "#517ECE"
- }), this.$nameText.attr({
- fill: "#FFFFFF"
- }), this.$timer.show(), this.$("#Selection").show(), this.timer.start();
- },
- unselect: function() {
- this.$nameWrapper.attr({
- fill: "#FFFFFF"
- }), this.$nameText.attr({
- fill: "#48AF5E"
- }), this.$timer.hide(), this.$("#Selection").hide(), this.timer.reset();
- }
- }), scope.Player = Player;
- }),
- Core(function(scope) {
- function Hand(root, options) {
- options = options || {}, this.$el = $(root), this.elements = {
- $topCard: "#top-card",
- $rollUp: "#roll-up",
- $rollDown: "#roll-down",
- $container: "#container",
- $back: "#back",
- $cards: "#cards"
- }, this.proxies = [ "show", "hide" ], this.__super__.constructor.call(this), this.$rollUp.on("click", this.show),
- this.$rollDown.on("click", this.hide), this.cards = [];
- }
- var trfsMap = [ {
- backHeight: 74,
- containerTrf: "0 -44",
- cardTrf: "0 -38"
- }, {
- backHeight: 124,
- containerTrf: "0 -94",
- cardTrf: "0 -89"
- }, {
- backHeight: 174,
- containerTrf: "0 -144",
- cardTrf: "0 -139"
- } ],
- defCardTrf = "0 20";
- $.inherit(Hand, scope.Controller), $.extend(Hand.prototype, {
- take: function() {
- var card = this.cards.pop();
- return this.render(), card && card.$el.remove(), card;
- },
- discard: function(tile) {
- var card = new scope.Card({
- color: scope.CARD_COLORS[tile[1] - 1],
- value: tile[2]
- });
- this.cards.push(card), this.render(), card.drag(), card.dragHandler.disable(), this.$topCard.append(card.$el[0]);
- },
- pop: function() {
- this.cards.pop(), this.render();
- },
- show: function() {
- var count = this.cards.length - 1;
- count > 0 && (this.$container.transform({
- to: trfsMap[4 > count ? count - 1 : 2].containerTrf,
- from: "0 50",
- dur: .355,
- calcMode: "linear"
- }), this.$back.animate({
- attributeName: "height",
- to: trfsMap[4 > count ? count - 1 : 2].backHeight,
- dur: .355
- }), this.$cards.find("g").each(function(el, i) {
- 3 > i && $(el).transform({
- to: trfsMap[i].cardTrf,
- from: "0 20",
- dur: .6,
- calcmode: "linear"
- });
- }), this.shown = !0);
- },
- hide: function() {
- var count = this.cards.length - 1;
- count > 0 && (this.$container.transform({
- to: "0 50",
- from: trfsMap[4 > count ? count - 1 : 2].containerTrf,
- dur: .5,
- calcMode: "linear"
- }), this.$back.animate({
- attributeName: "height",
- to: 0,
- dur: .5
- }), this.$cards.find("g").each(function(el, i) {
- 3 > i && $(el).transform({
- to: defCardTrf,
- from: trfsMap[4 > count ? count - 1 : 2].cardTrf,
- dur: .6,
- calcmode: "linear"
- });
- }), this.shown = !1);
- },
- render: function() {
- var history = this.cards.slice(0, this.cards.length - 1);
- this.$cards.empty(), this.shown && this.hide(), history.reverse().forEach(function(card) {
- card = card.clone(), card.template(scope.CARD_SMALL_SOURCE), card.$el.attr("transform", "translate(" + defCardTrf + ")"),
- this.$cards.append(card.$el[0]);
- }, this);
- },
- clear: function() {
- this.cards.forEach(function(card) {
- card.$el.remove();
- }), this.cards = [], this.render();
- }
- }), scope.Hand = Hand;
- }),
- Core(function(scope) {
- function Card(options) {
- options = options || {}, this.value = options.value, this.color = options.color,
- this.selected = !1, this.pos = {}, this.elements = {
- $circle: "circle",
- $text: "text",
- $overlay: ".overlay"
- }, this.proxies = [ "toggle", "selectGroup", "dragGroup", "clearGroup", "revertGroup" ],
- this.template(scope.CARD_SOURCE), this.$el.on("mousedown", this.toggle), this.$el.on("revert", this.revertGroup),
- this.$el.on("dragstop", this.clearGroup), this.$overlay.on("mousedown", this.selectGroup);
- }
- var selStart = !1;
- $(window).on("keydown", function(e) {
- e.ctrlKey && (selStart = !0);
- }), $(window).on("keyup", function() {
- selStart = !1;
- }), Card.selected = [], Card.uncheckAll = function() {
- for (var i = Card.selected.length; i--; ) Card.selected[i].uncheck();
- }, $("body").on("mousedown", Card.uncheckAll), $.inherit(Card, scope.Controller),
- $.extend(Card.prototype, {
- template: function(source) {
- $.load(source, this.proxy(this.load));
- },
- load: function(result) {
- this.$el = (this.$el || $("<g/>")).attr({
- "class": "card"
- }).css({
- cursor: "default"
- }).html(result), this.__super__.constructor.call(this), this.render();
- },
- render: function() {
- null == this.value && null == this.color ? (this.$circle.hide(), this.$text.hide()) : 0 == this.value ? (this.$circle.hide(),
- this.$text.show().attr({
- fill: this.color,
- y: 36
- }).text("*")) : (this.$circle.show().attr("fill", this.color), this.$text.show().attr("fill", this.color).text(this.value));
- },
- drag: function() {
- this.dragHandler = new scope.Draggable(this.$el), this.dragHandler.owner = this;
- },
- centerX: function() {
- var pos = this.$el.position(), width = this.$el.width();
- return Math.round(pos.left + width / 2);
- },
- toggle: function(e) {
- e.stopPropagation(), selStart ? this.nearSelectGroup() ? this.selected && !this.betweenSelected() ? this.uncheck() : this.check() : (Card.uncheckAll(),
- this.check()) : ~Card.selected.indexOf(this) || Card.uncheckAll();
- },
- check: function() {
- this.$overlay.css("display", ""), this.selected = !0, deck.cards[this.pos.y][this.pos.x] = null,
- Card.selected.push(this);
- },
- uncheck: function() {
- this.$overlay.css("display", "none"), this.selected = !1, deck.cards[this.pos.y][this.pos.x] = this;
- var i;
- ~(i = Card.selected.indexOf(this)) && Card.selected.splice(i, 1);
- },
- selectGroup: function(e) {
- if (!selStart) {
- for (var card, i = 0, l = Card.selected.length; l > i; i++) card = Card.selected[i],
- card != this && card.dragHandler.onDown(e, !0);
- this.$el.on("dragmove", this.dragGroup);
- }
- },
- dragGroup: function(e) {
- for (var card, i = 0, l = Card.selected.length; l > i; i++) card = Card.selected[i],
- card != this && card.dragHandler.onMove(e.detail.event, !0);
- },
- clearGroup: function() {
- this.$el.off("dragmove", this.dragGroup), selStart || Card.uncheckAll();
- },
- nearSelectGroup: function() {
- return Card.selected.some(function(card) {
- return Math.abs(card.pos.x - this.pos.x) <= 1 && card.pos.y == this.pos.y;
- }, this);
- },
- betweenSelected: function() {
- Card.selected.sort(function(a, b) {
- return (a.pos.x < b.pos.x) - (b.pos.x < a.pos.x);
- });
- var idx = Card.selected.indexOf(this);
- return -1 != idx && 0 != idx && idx != Card.selected.length - 1;
- },
- revertGroup: function() {
- for (var card, i = 0, l = Card.selected.length; l > i; i++) card = Card.selected[i],
- card != this && card.$el.transform({
- from: [ card.dragHandler.dx, card.dragHandler.dy ].join(" "),
- to: card.dragHandler.initTrf.join(" ")
- }), scope.deck.cards[card.pos.y][card.pos.x] = card;
- },
- clone: function() {
- return new Card({
- color: this.color,
- value: this.value
- });
- },
- log: function() {}
- }), scope.Card = Card;
- }),
- Core(function(scope) {
- function Deck(root, options) {
- options = options || {}, this.$el = $(root), this.elements = {
- $dropPlace: "#deck"
- }, this.proxies = [ "select", "track", "place" ], this.cards = [ [], [] ], this.trfs = [ [], [] ],
- this.__super__.constructor.call(this), this.$dropPlace.droppable({
- accept: this.place
- });
- }
- var padding = {
- top: 5,
- left: 5
- };
- $.inherit(Deck, scope.Controller);
- var prevX, prevY, selected;
- $.extend(Deck.prototype, {
- each: function(callback) {
- for (var i = 0; 15 > i; i++) for (var j = 0; 2 > j; j++) if (callback.call(this, this.cards[j][i], i, j) === !1) return;
- },
- fill: function(tiles) {
- var count = 0;
- this.each(function(c, i, j) {
- if (null != c && (this.cards[j][i] = null, c.$el.remove()), 0 == j && count < tiles.length) {
- var tile = tiles[count], card = new scope.Card({
- color: scope.CARD_COLORS[tile[1] - 1],
- value: tile[2]
- });
- card.pos = {
- x: i,
- y: j
- }, card.on("dragstart", this.select), card.on("dragmove", this.track), this.cards[j][i] = card,
- count++;
- }
- this.trfs[j][i] = {
- x: 42 * i + padding.left,
- y: 71 * j + padding.top
- };
- });
- },
- render: function() {
- this.each(function(card, i, j) {
- null != card && (card.$el.attr("transform", "translate(" + this.trfs[j][i].x + " " + this.trfs[j][i].y + ")"),
- card.drag(), this.$el.append(card.$el[0]));
- });
- },
- track: function(e) {
- this.each(function(card, i, j) {
- if (card && card.$el[0] != e.target && card.intersect(e.detail.x, e.detail.y) && !card.$el.attr("animated") && scope.Card.selected.length < 2) {
- var shift = e.detail.x > card.centerX() ? i + 1 : i - 1;
- return shift = shift > 14 ? shift - 2 : shift, shift = 0 > shift ? shift + 2 : shift,
- prevX = i, prevY = j, this.move({
- i: i,
- j: j
- }, {
- i: shift,
- j: j
- }), !1;
- }
- });
- },
- move: function(fst, snd) {
- var card, trfs = this.trfs, i = snd.i, cond = function(i) {
- return fst.i < snd.i ? 14 >= i : i >= 0;
- }, _cond = function(j, i) {
- return fst.i < snd.i ? i > j : j > i;
- }, op = function() {
- fst.i < snd.i ? i++ : i--;
- }, _op = function() {
- fst.i < snd.i ? j++ : j--;
- }, direction = function(j) {
- return fst.i < snd.i ? j + (scope.Card.selected.length || 1) : j - (scope.Card.selected.length || 1);
- }, _direction = function(j) {
- return fst.i < snd.i ? j - 1 : j + 1;
- };
- if (scope.Card.selected.length < 2) for (;cond(i); op()) if (null == this.cards[snd.j][i] || this.cards[snd.j][i] == selected) {
- for (var j = _direction(i); _cond(j, i); _op()) card = this.cards[fst.j][j], card != selected && (card.$el.transform({
- from: [ trfs[fst.j][j].x, trfs[fst.j][j].y ].join(" "),
- to: [ trfs[fst.j][direction(j)].x, trfs[fst.j][direction(j)].y ].join(" ")
- }), selected && (selected.dragHandler.initTrf = [ trfs[fst.j][j].x, trfs[fst.j][j].y ]),
- ((this.cards[fst.j][j] = this.cards[fst.j][direction(j)]) || {}).pos = {
- x: j,
- y: fst.j
- }, (this.cards[fst.j][direction(j)] = card).pos = {
- x: direction(j),
- y: fst.j
- });
- break;
- }
- },
- select: function(e) {
- selected = null, this.each(function(card) {
- return card && card.$el[0] == e.target ? (selected = card, !1) : void 0;
- });
- },
- place: function(target, x, y) {
- var trfs = this.trfs, pos = this.$dropPlace.position(), width = this.$dropPlace.width(), height = this.$dropPlace.height(), placeWidth = Math.round(width / 15), placeHeight = Math.round(height / 2), truePosX = Math.floor((x - pos.left) / placeWidth), posY = Math.floor((y - pos.top) / placeHeight);
- scope.Card.selected.sort(function(a, b) {
- return (a.pos.x > b.pos.x) - (b.pos.x > a.pos.x);
- });
- var dropResult, idx = scope.Card.selected.indexOf(target.owner), cards = scope.Card.selected.length ? scope.Card.selected.concat() : [ target.owner ];
- if (cards.every(function(card, i) {
- return posX = truePosX + (i - idx) * (card != target.owner), null == this.cards[posY][posX] || this.cards[posY][posX] == card;
- }, this)) for (var card, i = 0, l = cards.length; l > i; i++) card = cards[i], posX = truePosX + (i - idx) * (card != target.owner),
- (dropResult = null == this.cards[posY][posX] || this.cards[posY][posX] == selected) && (this.cards[posY][posX] != card && (null != card.pos.x && null != card.pos.y ? this.cards[card.pos.y][card.pos.x] = this.cards[card.pos.y][card.pos.x] == card ? null : this.cards[card.pos.y][card.pos.x] : (this.$el.trigger("take", {
- detail: {
- card: card
- }
- }), this.justTaken = !0), (this.cards[posY][posX] = card).pos = {
- x: posX,
- y: posY
- }), function(card) {
- card.$el.transform({
- from: card.$el.attr("transform").slice(10, -1),
- to: [ trfs[posY][posX].x, trfs[posY][posX].y ].join(" ")
- }).then(function() {
- card.dragHandler.storeTrf();
- });
- }(card));
- return dropResult;
- },
- remove: function(tile) {
- return selected && selected.color == scope.CARD_COLORS[tile[1] - 1] && selected.value == tile[2] ? (this.cards[selected.pos.y][selected.pos.x] = null,
- selected.$el.remove(), selected.off("dragmove", this.track), !1) : void this.each(function(card, i, j) {
- return card && card.color == scope.CARD_COLORS[tile[1] - 1] && card.value == tile[2] ? (this.cards[j][i] = null,
- card.$el.remove(), card.off("dragmove", this.track), !1) : void 0;
- });
- },
- insert: function(tile) {
- this.justTaken ? this.justTaken = !1 : this.each(function(card, i, j) {
- return card ? void 0 : (card = new scope.Card({
- color: scope.CARD_COLORS[tile[1] - 1],
- value: tile[2]
- }), card.pos = {
- x: i,
- y: j
- }, card.on("dragstart", this.select), card.on("dragmove", this.track), this.cards[j][i] = card,
- card.$el.attr("transform", "translate(" + this.trfs[j][i].x + " " + this.trfs[j][i].y + ")"),
- card.drag(), this.$el.append(card.$el[0]), !1);
- });
- },
- length: function() {
- var count = 0;
- return this.each(function(card) {
- null != card && (count += 1);
- }), count;
- },
- hand: function(discarded) {
- return result = [ [], [] ], this.each(function(card, i, j) {
- card && card != discarded && result[j].push(tuple(atom("OkeyPiece"), scope.CARD_COLORS.indexOf(card.color) + 1, card.value));
- }), result;
- },
- dir: function() {
- for (var i = 0; 15 > i; i++) this.cards[0][i] && this.cards[0][i].log();
- for (var i = 0; 15 > i; i++) this.cards[1][i] && this.cards[1][i].log();
- }
- }), scope.deck = new Deck("#deck-root");
- }),
- Core(function(scope) {
- $.load(scope.CARD_SOURCE, function() {
- function fadeOut() {
- $(this).animate({
- attributeName: "opacity",
- from: 1,
- to: 0,
- dur: .3
- });
- }
- function fadeIn() {
- $(this).animate({
- attributeName: "opacity",
- from: 0,
- to: 1,
- dur: .3
- });
- }
- function addFadeOut() {
- $(this).on(document.createTouch ? "touchend" : "mouseup", fadeOut);
- }
- function removeFadeOut() {
- $(this).off(document.createTouch ? "touchend" : "mouseup", fadeOut);
- }
- function createCentralCard() {
- centralCard = new scope.Card(), centralCard.$el.attr({
- opacity: 0,
- transform: "translate(298 -115)"
- }).on(document.createTouch ? "touchstart" : "mousedown", fadeIn).on(document.createTouch ? "touchend" : "mouseup", fadeOut),
- centralCard.drag(), centralCard.dragHandler.enable(), centralCard.on("dragstart", deck.select).on("dragmove", removeFadeOut).on("dragstop", addFadeOut).on("dragmove", deck.track).on("revert", fadeOut),
- deck.$el.append(centralCard.$el[0]);
- }
- function init(e) {
- if (ended = !1, scope.deck.fill(e.detail.tiles), scope.deck.render(), centralCard.dragHandler.disable(),
- centralCard.$el.off(document.createTouch ? "touchstart" : "mousedown", fadeIn).off(document.createTouch ? "touchend" : "mouseup", fadeOut),
- e.detail.gosterge && "null" != e.detail.gosterge) {
- var gosterge = new scope.Card({
- color: scope.CARD_COLORS[e.detail.gosterge[1] - 1],
- value: e.detail.gosterge[2]
- });
- gosterge.$el.attr("transform", "translate(16 0)"), $gosterge.append(gosterge.$el);
- }
- var piles = e.detail.piles;
- if (piles && "null" != piles) for (var i = 0; i < piles.length, pile; i++) {
- pile = piles[i];
- for (var name in pile) for (var playerPile = pile[name], hand = playersLeftHandsMap[name], j = playerPile.length; j--; ) hand.discard(playerPile[j]);
- }
- e.detail.whos_move && "null" != e.detail.whos_move && (e.detail.next_turn_in && "null" != e.detail.next_turn_in && playersMap[e.detail.whos_move].timer.from(e.detail.next_turn_in),
- e.detail.paused && (playersMap[e.detail.whos_move].timer.pause(), $overlay.show()),
- playersMap[e.detail.whos_move].select());
- }
- window.deck = scope.deck;
- var centralCard, apiProvider = new scope.ApiProvider({
- url: scope.apiUrl,
- gameId: scope.gameId,
- sessionId: scope.defaultSessionId
- });
- createCentralCard(), deck.on("take", function(e) {
- e.detail.card.$el.off(document.createTouch ? "touchstart" : "mousedown", fadeIn).off(document.createTouch ? "touchend" : "mouseup", fadeOut),
- centralCard.off("dragmove", removeFadeOut).off("dragstop", addFadeOut).off("revert", fadeOut),
- ~playersLeftHandsMap[scope.user].cards.indexOf(e.detail.card) && playersLeftHandsMap[scope.user].pop(),
- apiProvider.actionTake(e.detail.card);
- });
- var $gosterge = $("#gosterge"), ended = !0;
- apiProvider.on("okey_game_started", init), apiProvider.on("okey_game_player_state", init);
- var playersPositions = [ [ "me", "right", "center", "left" ], [ "left", "me", "right", "center" ], [ "center", "left", "me", "right" ], [ "right", "center", "left", "me" ] ], playersMap = {}, playersRightHandsMap = {}, playersLeftHandsMap = {};
- apiProvider.on("okey_game_info", function(e) {
- if (!scope.started) {
- for (var playerInfo, players = e.detail.players, i = 0; i < players.length; i++) if (playerInfo = players[i].PlayerInfo,
- playerInfo[0] == scope.user) {
- playersPositions = playersPositions[i];
- break;
- }
- for (var playerInfo, i = 0, l = players.length; l > i; i++) {
- playerInfo = players[i].PlayerInfo, playersMap[playerInfo[0]] = playersMap[playerInfo[0]] || new scope.Player({
- position: playersPositions[i],
- name: [ playerInfo[2], playerInfo[3] ].join(" ")
- });
- var prevPlayer = i == players.length - 1 ? players[0] : players[i + 1];
- for (var prop in playersLeftHandsMap) playersLeftHandsMap[prop].clear();
- playersLeftHandsMap[prevPlayer.PlayerInfo[0]] = playersRightHandsMap[playerInfo[0]] = new scope.Hand("#" + [ "player", playersPositions[i], "hand" ].join("-")),
- "me" == playersPositions[i] && playersRightHandsMap[playerInfo[0]].$el.droppable({
- accept: function() {
- return playerTurn && deck.length() > 14;
- },
- drop: function(target) {
- apiProvider.actionDiscard(target.owner);
- }
- });
- }
- scope.started = !0;
- }
- }), window.playersRightHandsMap = playersRightHandsMap, window.playersLeftHandsMap = playersLeftHandsMap;
- var playerTurn = !1;
- apiProvider.on("okey_next_turn", function(e) {
- for (var playerName in playersMap) playersMap[playerName].unselect();
- if (playersMap[e.detail.player].select(), e.detail.player == scope.user) {
- playerTurn = !0;
- var cards = playersLeftHandsMap[e.detail.player].cards;
- if (cards.length) {
- var card = cards[cards.length - 1];
- deck.$el.append(card.$el[0]), card.$el.attr({
- transform: "translate(16 -65)"
- }), card.dragHandler.enable(), card.on("dragstart", deck.select), card.on("dragmove", deck.track);
- }
- deck.length() < 15 ? (centralCard.dragHandler.enable(), centralCard.$el.on(document.createTouch ? "touchstart" : "mousedown", fadeIn).on(document.createTouch ? "touchend" : "mouseup", fadeOut),
- centralCard.on("dragmove", removeFadeOut).on("dragstop", addFadeOut).on("revert", fadeOut)) : (centralCard.dragHandler.disable(),
- centralCard.$el.off(document.createTouch ? "touchstart" : "mousedown", fadeIn).off(document.createTouch ? "touchend" : "mouseup", fadeOut));
- } else playerTurn = !1, centralCard.dragHandler.disable(), centralCard.$el.off(document.createTouch ? "touchstart" : "mousedown", fadeIn).off(document.createTouch ? "touchend" : "mouseup", fadeOut);
- }), apiProvider.on("okey_tile_discarded", function(e) {
- if ("object" == typeof e.detail.tile) {
- var c = new scope.Card({
- color: scope.CARD_COLORS[e.detail.tile[1] - 1],
- value: e.detail.tile[2]
- });
- c.log();
- }
- e.detail.player == scope.user && deck.remove(e.detail.tile), playersRightHandsMap[e.detail.player].discard(e.detail.tile);
- });
- var $pile = $("#pile"), $fullPile = $pile.find("g").clone(), $wholeCards = $("#whole-cards"), $fullWholeCards = $("#whole-cards > g").clone();
- apiProvider.on("okey_tile_taken", function(e) {
- if ("object" == typeof e.detail.revealed) {
- var c = new scope.Card({
- color: scope.CARD_COLORS[e.detail.revealed[1] - 1],
- value: e.detail.revealed[2]
- });
- c.log();
- }
- if (e.detail.pile && !deck.justTaken && playersLeftHandsMap[e.detail.player].take(),
- 0 === e.detail.pile && e.detail.player == scope.user && (centralCard.color = scope.CARD_COLORS[e.detail.revealed[1] - 1],
- centralCard.value = e.detail.revealed[2], centralCard.render(), createCentralCard()),
- 0 === e.detail.pile) {
- var $topCard = $pile.find("g");
- if ($topCard.length > 1) $topCard.last().remove(); else {
- $topCard.last().remove(), $pile.append($fullPile);
- var $miniPile = $wholeCards.find("g");
- $miniPile.length ? $miniPile.first().remove() : $wholeCards.append($fullWholeCards);
- }
- }
- e.detail.player == scope.user && deck.insert(e.detail.revealed), centralCard.dragHandler.disable(),
- centralCard.$el.off(document.createTouch ? "touchstart" : "mousedown", fadeIn).off(document.createTouch ? "touchend" : "mouseup", fadeOut);
- var cards = playersLeftHandsMap[scope.user].cards;
- if (cards.length) {
- var card = cards[cards.length - 1];
- card.dragHandler.disable();
- }
- }), apiProvider.on("okey_revealed", function(e) {
- ended = !0, alert(e.detail.player), deck.fill([]);
- for (var hand in playersLeftHandsMap) playersLeftHandsMap[hand].clear();
- for (var playerName in playersMap) playersMap[playerName].unselect();
- $gosterge.remove();
- }), apiProvider.on("player_left", function(e) {
- var playerInfo = e.detail.replacement.PlayerInfo;
- playersMap[playerInfo[0]] = new scope.Player({
- position: playersMap[e.detail.player].position,
- name: [ playerInfo[2], playerInfo[3] ].join(" "),
- noSkin: !0
- }), delete playersMap[e.detail.player], playersRightHandsMap[playerInfo[0]] = playersRightHandsMap[e.detail.player],
- delete playersRightHandsMap[e.detail.player], playersLeftHandsMap[playerInfo[0]] = playersLeftHandsMap[e.detail.player],
- delete playersLeftHandsMap[e.detail.player];
- }), $("#pause").on("click", function() {
- apiProvider.pause();
- });
- var whoPausedGame, $overlay = $("#overlay");
- $overlay.on("click", function() {
- whoPausedGame == scope.user && apiProvider.pause(!0);
- }), apiProvider.on("game_paused", function(e) {
- if (whoPausedGame = e.detail[3], "pause" == e.detail[2]) {
- $overlay.show();
- for (var player in playersMap) playersMap[player].timer.pause();
- var player = playersMap[e.detail[3]];
- $overlay.find("text").text(player.name + " paused the game");
- } else {
- $overlay.hide();
- for (var player in playersMap) playersMap[player].timer.resume();
- }
- }), $("#table-ellipse").droppable({
- accept: function(target) {
- return 1 === apiProvider.socket.readyState && deck.length() > 14 && target.owner != centralCard && !ended && scope.Card.selected.length <= 1;
- },
- drop: function(target) {
- apiProvider.reveal(target.owner, deck.hand(target.owner));
- }
- });
- });
- var leftFlag = !1;
- $("#Left-Menu").css("cursor", "pointer").on("click", function() {
- leftFlag ? ($("#Tournaments").transform({
- to: "10 575",
- from: "44 465"
- }), $("#Promos").transform({
- to: "10 575",
- from: "122 538"
- }), leftFlag = !1) : ($("#Tournaments").transform({
- from: "10 575",
- to: "44 465"
- }), $("#Promos").transform({
- from: "10 575",
- to: "122 538"
- }), leftFlag = !0);
- });
- var rightFlag = !1;
- $("#Right-Menu").css("cursor", "pointer").on("click", function() {
- rightFlag ? ($("#Play").transform({
- to: "975 575",
- from: "946, 461"
- }), $("#Create").transform({
- to: "975 575",
- from: "864 526"
- }), rightFlag = !1) : ($("#Play").transform({
- from: "975 575",
- to: "946, 461"
- }), $("#Create").transform({
- from: "975 575",
- to: "864 526"
- }), rightFlag = !0);
- });
- });
|