From 8a7d5ca17d17b58b26f8f7c23eca8ede834a10bc Mon Sep 17 00:00:00 2001 From: Serge Koba Date: Fri, 14 Jun 2019 15:38:35 +0300 Subject: [PATCH] add controllers to game object and other refactoring --- web/game/mode/js/cards_controller.js | 22 +++ web/game/mode/js/game.js | 18 ++ web/game/mode/js/mode.js | 20 +- web/game/mode/js/player.js | 15 ++ web/game/mode/js/players_controller.js | 33 ++++ web/game/mode/js/turn_controller.js | 11 ++ web/game/mode9/js_libs/api.js | 29 ++- web/game/mode9/js_libs/execute.js | 10 +- web/game/mode9/js_libs/initialization.js | 2 +- web/game/mode9/js_libs/mode.js | 228 ++++++++++++++++++++++- web/game/mode9/js_libs/mode.js.map | 2 +- 11 files changed, 353 insertions(+), 37 deletions(-) create mode 100644 web/game/mode/js/cards_controller.js create mode 100644 web/game/mode/js/game.js create mode 100644 web/game/mode/js/player.js create mode 100644 web/game/mode/js/players_controller.js create mode 100644 web/game/mode/js/turn_controller.js diff --git a/web/game/mode/js/cards_controller.js b/web/game/mode/js/cards_controller.js new file mode 100644 index 0000000..f71f5f8 --- /dev/null +++ b/web/game/mode/js/cards_controller.js @@ -0,0 +1,22 @@ +"use strict" + +export class CardsController { + constructor() { + this.cards = [] + this.cardActionDoneInThisTurn = false + } + + setCardActionDoneInThisTurn(cardActionDoneInThisTurn) { + this.cardActionDoneInThisTurn = cardActionDoneInThisTurn + } + + canMakeAction() { + let game = window.Game + return (game.TurnController.myTurn && !game.CardsController.cardActionDoneInThisTurn) + } + + canBuy() { + return window.Game.PlayersController.getMyPlayer()['gold'].toInt() >= mode_config["card cost"] + && (realtime_cards || this.canMakeAction()); + } +} \ No newline at end of file diff --git a/web/game/mode/js/game.js b/web/game/mode/js/game.js new file mode 100644 index 0000000..ccaa864 --- /dev/null +++ b/web/game/mode/js/game.js @@ -0,0 +1,18 @@ +"use strict" + +export class Game { + constructor(gameData, myPlayerNum) { + this.creation_date = gameData['creation_date'] + this.game_id = gameData['game_id'] + this.mode_id = gameData['mode_id'] + this.owner_id = gameData['owner_id'] + this.status_id = gameData['status_id'] + this.time_restriction = gameData['time_restriction'] + this.title = gameData['title'] + this.type_id = gameData['type_id'] + + this.PlayersController = new window.GameMode.PlayersController(myPlayerNum) + this.CardsController = new window.GameMode.CardsController() + this.TurnController = new window.GameMode.TurnController() + } +} \ No newline at end of file diff --git a/web/game/mode/js/mode.js b/web/game/mode/js/mode.js index 4bfd759..f6d3863 100644 --- a/web/game/mode/js/mode.js +++ b/web/game/mode/js/mode.js @@ -1,9 +1,14 @@ "use strict" -import {Unit} from "./unit.js"; -import {Building} from "./building.js"; -import {BoardObject} from "./board_object.js"; -import {Cell} from "./cell.js"; +import {Game} from "./game.js" +import {Player} from "./player.js" +import {PlayersController} from "./players_controller.js" +import {CardsController} from "./cards_controller.js" +import {TurnController} from "./turn_controller.js" +import {Unit} from "./unit.js" +import {Building} from "./building.js" +import {BoardObject} from "./board_object.js" +import {Cell} from "./cell.js" class GameMode { constructor() { @@ -11,7 +16,12 @@ class GameMode { this.Building = Building this.BoardObject = BoardObject this.Cell = Cell + this.Game = Game + this.Player = Player + this.PlayersController = PlayersController + this.CardsController = CardsController + this.TurnController = TurnController } } -window.GameMode = new GameMode(); \ No newline at end of file +window.GameMode = new GameMode() \ No newline at end of file diff --git a/web/game/mode/js/player.js b/web/game/mode/js/player.js new file mode 100644 index 0000000..bbfb539 --- /dev/null +++ b/web/game/mode/js/player.js @@ -0,0 +1,15 @@ +"use strict" + +export class Player { + constructor(data) { + this.player_num = data['player_num'].toInt() + this.name = data['name'] + this.gold = data['gold'].toInt() + this.owner = data['owner'].toInt() + this.team = data['team'].toInt() + } + + setGold(gold) { + this.gold = gold.toInt() + } +} \ No newline at end of file diff --git a/web/game/mode/js/players_controller.js b/web/game/mode/js/players_controller.js new file mode 100644 index 0000000..d20e012 --- /dev/null +++ b/web/game/mode/js/players_controller.js @@ -0,0 +1,33 @@ +"use strict" + +export class PlayersController { + constructor(myPlayerNum) { + this.players = [] + this.myPlayerNum = myPlayerNum.toInt() + } + + addPlayer(playerData) { + player = new window.GameMode.Player(playerData) + this.players.push(player) + } + + removePlayer(playerNum) { + this.players = this.players.filter((player, _index, _arr) => { + return player.num != playerNum + }) + } + + getMyPlayer() { + return this.getPlayerByNum(this.myPlayerNum) + } + + isMyPlayer(playerNum) { + return playerNum.toInt() == this.myPlayerNum + } + + getPlayerByNum(playerNum) { + return this.players.find((player) => { + return player.player_num == playerNum + }) + } +} \ No newline at end of file diff --git a/web/game/mode/js/turn_controller.js b/web/game/mode/js/turn_controller.js new file mode 100644 index 0000000..7557b43 --- /dev/null +++ b/web/game/mode/js/turn_controller.js @@ -0,0 +1,11 @@ +"use strict" + +export class TurnController { + constructor() { + this.myTurn = false + } + + setMyTurn(myTurn) { + this.myTurn = myTurn + } +} \ No newline at end of file diff --git a/web/game/mode9/js_libs/api.js b/web/game/mode9/js_libs/api.js index 1b0cafb..3a0e560 100644 --- a/web/game/mode9/js_libs/api.js +++ b/web/game/mode9/js_libs/api.js @@ -29,6 +29,7 @@ function publish_api_call() { function player_set_gold(p_num, amount) { publish_api_call(); players_by_num[p_num]["gold"] = amount; + window.Game.PlayersController.getPlayerByNum(p_num).setGold(amount) update_game_info_window(); if (p_num == my_player_num && (turn_state == MY_TURN || realtime_cards)) { update_controls_activation(); @@ -74,6 +75,7 @@ function add_player(p_num, name, gold, owner, team) { players_by_num[p_num]['gold'] = gold; players_by_num[p_num]['owner'] = owner; players_by_num[p_num]['team'] = team; + window.Game.PlayersController.addPlayer(players_by_num[p_num]); if (p_num < 10) { //not neutral var myP = new Element('p', { 'html': name + ":", @@ -109,6 +111,7 @@ function add_player(p_num, name, gold, owner, team) { function delete_player(p_num) { publish_api_call(); delete players_by_num[p_num]; + window.Game.PlayersController.removePlayer(p_num); if (p_num < 10) { //not neutral if ($('player' + p_num)) { $('player' + p_num).destroy(); @@ -1463,30 +1466,21 @@ function move_anim(x, y, x2, y2, size) { function is_active_card(cardDiv) { var card_id = cardDiv.attributes.card_id.value; - if (players_by_num[my_player_num]["gold"].toInt() < cards[card_id]['cost'].toInt()) { + if (window.Game.PlayersController.getMyPlayer()["gold"].toInt() < cards[card_id]['cost'].toInt()) { return false; } if (realtime_cards && cards[card_id]['type'] == 'm') { return true; } - return can_make_card_action(); -} - -function can_make_card_action() { - return (turn_state == MY_TURN && !card_action_done_in_this_turn); + return window.Game.CardsController.canMakeAction(); } function is_active_grave(graveDiv) { - return can_make_card_action() + return window.Game.CardsController.canMakeAction() && (graveDiv.attributes.turn_when_killed.value != active_players['turn'] || graveDiv.attributes.player_num_when_killed.value != active_players['player_num']) && players_by_num[my_player_num]["gold"].toInt() >= cards[graveDiv.attributes.card_id.value]['cost'].toInt() * 2; } -function is_active_buy_card_button() { - return players_by_num[my_player_num]['gold'].toInt() >= mode_config["card cost"] - && (realtime_cards || can_make_card_action()); -} - function is_active_subsidy_button() { if (board_buildings[my_castle_id] && board_buildings[my_castle_id]['health'].toInt() < 2) { return false; @@ -2204,6 +2198,7 @@ function end_game() { clearInterval(shieldInterval); clearInterval(titleInterval); turn_state = NOT_MY_TURN; + window.Game.TurnController.setMyTurn(false) deactivate_controls(); var text = '' + i18n[USER_LANGUAGE]['game']['show_statistic'] + '
' + i18n[USER_LANGUAGE]['game']['exit'] + ''; noCloseWindow = true; @@ -2438,13 +2433,14 @@ function set_active_player(player_num, last_end_turn, turn, npc_flag, units_move subsidy_flag = subsidy_flag || 0; from_init = from_init || 0; //clean green cells after my move - if (turn_state == MY_TURN) { + if (window.Game.TurnController.myTurn) { $$('#board .green').removeClass('green'); $$('#board .activeUnit').removeClass('activeUnit'); } - if (player_num == my_player_num) { + if (window.Game.PlayersController.isMyPlayer(player_num)) { turn_state = MY_TURN; - card_action_done_in_this_turn = card_played_flag.toInt(); + window.Game.TurnController.setMyTurn(true); + window.Game.CardsController.setCardActionDoneInThisTurn(card_played_flag.toInt() == 1); subsidy_taken_in_this_turn = subsidy_flag.toInt(); movedUnits = units_moves_flag.toInt(); activateMyMove(); @@ -2454,6 +2450,7 @@ function set_active_player(player_num, last_end_turn, turn, npc_flag, units_move movedUnits = false; clearTimeout(remindMoveTimer); turn_state = NOT_MY_TURN; + window.Game.TurnController.setMyTurn(false) clean_everything(); stopShield(); if (game_state != 'WAITTING') cancel_execute(); //for interrupting of polza choosing params @@ -2532,7 +2529,7 @@ function update_next_turn_timer(left_seconds) { } function update_controls_activation() { - button_set_availability($('main_buttons').getChildren('.btn_buycard')[0], is_active_buy_card_button()); + button_set_availability($('main_buttons').getChildren('.btn_buycard')[0], window.Game.CardsController.canBuy()); button_set_availability($('main_buttons').getChildren('.btn_subs')[0], is_active_subsidy_button()); button_set_availability($('main_buttons').getChildren('.btn_sendm')[0], is_active_send_button()); button_set_availability($('main_buttons').getChildren('.btn_end_turn')[0], turn_state == MY_TURN); diff --git a/web/game/mode9/js_libs/execute.js b/web/game/mode9/js_libs/execute.js index dcb2d30..10416b6 100644 --- a/web/game/mode9/js_libs/execute.js +++ b/web/game/mode9/js_libs/execute.js @@ -128,8 +128,8 @@ function proc_answer(pr_uid, suc, error_code, error_params, ape_time, php_time) 'php_time':php_time }); if (playingCard && (!realtime_cards || cards[currently_played_card_id]['type'] != 'm')) { - card_action_done_in_this_turn = 1; - update_controls_activation(); + window.Game.CardsController.setCardActionDoneInThisTurn(true); + update_controls_activation(); } } @@ -722,7 +722,7 @@ function post_put_building() { function post_buy_card() { if (error_procedure == '') { if (!realtime_cards) { - card_action_done_in_this_turn = 1; + window.Game.CardsController.setCardActionDoneInThisTurn(true); } setTimeout("update_controls_activation();", 1000); } @@ -744,8 +744,8 @@ function post_take_subsidy() { function post_player_resurrect() { if (error_procedure == '') { - card_action_done_in_this_turn = 1; - setTimeout("update_controls_activation();", 1000); + window.Game.CardsController.setCardActionDoneInThisTurn(true); + setTimeout("update_controls_activation();", 1000); } } diff --git a/web/game/mode9/js_libs/initialization.js b/web/game/mode9/js_libs/initialization.js index ead18ef..6cddfff 100644 --- a/web/game/mode9/js_libs/initialization.js +++ b/web/game/mode9/js_libs/initialization.js @@ -7,7 +7,6 @@ var was_active = 0; //state of player var shieldInterval; var titleInterval; var realtime_cards; -var card_action_done_in_this_turn = 0; var subsidy_taken_in_this_turn = 0; var time_delay_from_server = 0; @@ -117,6 +116,7 @@ function initialization() { try { parent.WSClient.joinGame(game_info["game_id"]); //init some variables + window.Game = new window.GameMode.Game(game_info, my_player_num) time_restriction = game_info["time_restriction"].toInt(); game_status = game_info["status_id"].toInt(); initGameFeatures(); diff --git a/web/game/mode9/js_libs/mode.js b/web/game/mode9/js_libs/mode.js index aa8add8..fbd3f36 100644 --- a/web/game/mode9/js_libs/mode.js +++ b/web/game/mode9/js_libs/mode.js @@ -46,13 +46,23 @@ "use strict"; - var _unit = __webpack_require__(1); + var _game = __webpack_require__(1); - var _building = __webpack_require__(2); + var _player = __webpack_require__(2); - var _board_object = __webpack_require__(3); + var _players_controller = __webpack_require__(3); - var _cell = __webpack_require__(4); + var _cards_controller = __webpack_require__(4); + + var _turn_controller = __webpack_require__(5); + + var _unit = __webpack_require__(6); + + var _building = __webpack_require__(7); + + var _board_object = __webpack_require__(8); + + var _cell = __webpack_require__(9); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -63,6 +73,11 @@ this.Building = _building.Building; this.BoardObject = _board_object.BoardObject; this.Cell = _cell.Cell; + this.Game = _game.Game; + this.Player = _player.Player; + this.PlayersController = _players_controller.PlayersController; + this.CardsController = _cards_controller.CardsController; + this.TurnController = _turn_controller.TurnController; }; window.GameMode = new GameMode(); @@ -77,6 +92,201 @@ value: true }); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var Game = exports.Game = function Game(gameData, myPlayerNum) { + _classCallCheck(this, Game); + + this.creation_date = gameData['creation_date']; + this.game_id = gameData['game_id']; + this.mode_id = gameData['mode_id']; + this.owner_id = gameData['owner_id']; + this.status_id = gameData['status_id']; + this.time_restriction = gameData['time_restriction']; + this.title = gameData['title']; + this.type_id = gameData['type_id']; + + this.PlayersController = new window.GameMode.PlayersController(myPlayerNum); + this.CardsController = new window.GameMode.CardsController(); + this.TurnController = new window.GameMode.TurnController(); + }; + +/***/ }), +/* 2 */ +/***/ (function(module, exports) { + + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var Player = exports.Player = function () { + function Player(data) { + _classCallCheck(this, Player); + + this.player_num = data['player_num'].toInt(); + this.name = data['name']; + this.gold = data['gold'].toInt(); + this.owner = data['owner'].toInt(); + this.team = data['team'].toInt(); + } + + _createClass(Player, [{ + key: 'setGold', + value: function setGold(gold) { + this.gold = gold.toInt(); + } + }]); + + return Player; + }(); + +/***/ }), +/* 3 */ +/***/ (function(module, exports) { + + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var PlayersController = exports.PlayersController = function () { + function PlayersController(myPlayerNum) { + _classCallCheck(this, PlayersController); + + this.players = []; + this.myPlayerNum = myPlayerNum.toInt(); + } + + _createClass(PlayersController, [{ + key: "addPlayer", + value: function addPlayer(playerData) { + player = new window.GameMode.Player(playerData); + this.players.push(player); + } + }, { + key: "removePlayer", + value: function removePlayer(playerNum) { + this.players = this.players.filter(function (player, _index, _arr) { + return player.num != playerNum; + }); + } + }, { + key: "getMyPlayer", + value: function getMyPlayer() { + return this.getPlayerByNum(this.myPlayerNum); + } + }, { + key: "isMyPlayer", + value: function isMyPlayer(playerNum) { + return playerNum.toInt() == this.myPlayerNum; + } + }, { + key: "getPlayerByNum", + value: function getPlayerByNum(playerNum) { + return this.players.find(function (player) { + return player.player_num == playerNum; + }); + } + }]); + + return PlayersController; + }(); + +/***/ }), +/* 4 */ +/***/ (function(module, exports) { + + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var CardsController = exports.CardsController = function () { + function CardsController() { + _classCallCheck(this, CardsController); + + this.cards = []; + this.cardActionDoneInThisTurn = false; + } + + _createClass(CardsController, [{ + key: "setCardActionDoneInThisTurn", + value: function setCardActionDoneInThisTurn(cardActionDoneInThisTurn) { + this.cardActionDoneInThisTurn = cardActionDoneInThisTurn; + } + }, { + key: "canMakeAction", + value: function canMakeAction() { + var game = window.Game; + return game.TurnController.myTurn && !game.CardsController.cardActionDoneInThisTurn; + } + }, { + key: "canBuy", + value: function canBuy() { + return window.Game.PlayersController.getMyPlayer()['gold'].toInt() >= mode_config["card cost"] && (realtime_cards || this.canMakeAction()); + } + }]); + + return CardsController; + }(); + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var TurnController = exports.TurnController = function () { + function TurnController() { + _classCallCheck(this, TurnController); + + this.myTurn = false; + } + + _createClass(TurnController, [{ + key: "setMyTurn", + value: function setMyTurn(myTurn) { + this.myTurn = myTurn; + } + }]); + + return TurnController; + }(); + +/***/ }), +/* 6 */ +/***/ (function(module, exports) { + + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -578,7 +788,7 @@ }(); /***/ }), -/* 2 */ +/* 7 */ /***/ (function(module, exports) { "use strict"; @@ -618,7 +828,7 @@ }(); /***/ }), -/* 3 */ +/* 8 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -630,9 +840,9 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - var _unit = __webpack_require__(1); + var _unit = __webpack_require__(6); - var _building = __webpack_require__(2); + var _building = __webpack_require__(7); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -667,7 +877,7 @@ }(); /***/ }), -/* 4 */ +/* 9 */ /***/ (function(module, exports) { "use strict"; diff --git a/web/game/mode9/js_libs/mode.js.map b/web/game/mode9/js_libs/mode.js.map index a6a878b..fc0ccad 100644 --- a/web/game/mode9/js_libs/mode.js.map +++ b/web/game/mode9/js_libs/mode.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap 9103e77d3ac1a8bfd76d","webpack:///./game/mode/js/mode.js","webpack:///./game/mode/js/unit.js","webpack:///./game/mode/js/building.js","webpack:///./game/mode/js/board_object.js","webpack:///./game/mode/js/cell.js"],"names":["GameMode","Unit","Building","BoardObject","Cell","window","id","boardUnitId","units","board_units","toInt","players_by_num","getPlayerNum","ux","uy","board","each","items","index","item","x","y","$chk","nearSelectedUnit","cx","cy","size","getSize","distance","teleport","tx","ty","tid","board_buildings","buildings","my_player_num","a","b","dist","Math","sqrt","mx","my","unitCoord","getLeftUpCoord","movesLeft","getMovesLeft","max","abs","fitsCoord","getKnight","flying","distToCoord","canMove","canTeleport","targetX","targetY","isNear","path","getPath","slice","length","directStepsToCoord","canFlyToCoord","found","find","p","renderObjects","not_reached","path_board","Array","i","k","l","m","symbols","knight","target_coord","leftUpCoord","cnear","tnear","step","cango","t_in","x_in","path_moves","x_path","y_path","path_actions","u_x","u_y","cur_x","cur_y","doattack","ufound","stop","delta","j","pow","sina","angl","PI","asin","angl2","can_hit_earlier","undefined","push","boardBuildingId","boardObjectId","object","getTeam"],"mappings":"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","file":"mode.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 9103e77d3ac1a8bfd76d","\"use strict\"\n\nimport {Unit} from \"./unit.js\";\nimport {Building} from \"./building.js\";\nimport {BoardObject} from \"./board_object.js\";\nimport {Cell} from \"./cell.js\";\n\nclass GameMode {\n constructor() {\n this.Unit = Unit\n this.Building = Building\n this.BoardObject = BoardObject\n this.Cell = Cell\n }\n}\n\nwindow.GameMode = new GameMode();\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/mode.js","\"use strict\"\n\nexport class Unit {\n constructor(id) {\n this.boardUnitId = id\n }\n\n getSize() {\n return units[board_units[this.boardUnitId][\"unit_id\"]]['size'].toInt();\n }\n\n getMovesLeft() {\n return board_units[this.boardUnitId][\"moves_left\"].toInt();\n }\n\n getPlayerNum() {\n return board_units[this.boardUnitId]['player_num'];\n }\n\n getTeam() {\n return players_by_num[this.getPlayerNum()]['team'];\n }\n\n getKnight() {\n var id = this.boardUnitId\n return board_units[id][\"knight\"] == 1\n }\n\n getLeftUpCoord() {\n let id = this.boardUnitId;\n let ux = 9999999;\n let uy = 9999999;\n board.each(function(items, index) {\n if (items) items.each(function(item, index) {\n if (item)\n if (item[\"ref\"] == id && item[\"type\"] == \"unit\") {\n if (item[\"x\"].toInt() < ux) ux = item[\"x\"].toInt();\n if (item[\"y\"].toInt() < uy) uy = item[\"y\"].toInt();\n }\n });\n });\n return {x: ux, y: uy}\n }\n\n canMove() {\n let id = this.boardUnitId;\n return board_units[id][\"moves_left\"].toInt() > 0 && !$chk(board_units[id]['paralich'])\n }\n\n isNear(x, y) {\n let id = this.boardUnitId;\n var nearSelectedUnit = false;\n var cx;\n var cy;\n for (cx = x - 1; cx < x + 2; cx++)\n for (cy = y - 1; cy < y + 2; cy++) {\n if (board[cx])\n if (board[cx][cy])\n if (board[cx][cy][\"ref\"] == id && board[cx][cy][\"type\"] == 'unit') {\n nearSelectedUnit = true;\n }\n }\n return nearSelectedUnit;\n }\n\n canTeleport(x, y) {\n let id = this.boardUnitId;\n let size = this.getSize();\n var distance = 999999;\n var teleport = 0;\n var tx = 0;\n var ty = 0;\n var tid;\n board_buildings.each(function(item, index) {\n if (item)\n if ($chk(players_by_num[item['player_num']])) //player num 9 for trees,moat ... doesnt exists\n if (board_units[id]['magic_immunity'] != 1 && buildings[item[\"building_id\"]]['ui_code'] == 'teleport' && (item['player_num'] == my_player_num || players_by_num[item['player_num']]['team'] == players_by_num[my_player_num]['team'])) { //this is my Teleport or my ally and unit is not golem(magic_immunity==1)\n tid = item[\"id\"];\n teleport = 1;\n //get coords\n board.each(function(items, index) {\n if (items) items.each(function(item, index) {\n if (item)\n if (item[\"ref\"] == tid && item[\"type\"] == \"building\") {\n var a = x - item[\"x\"].toInt();\n var b = y - item[\"y\"].toInt();\n var dist = Math.sqrt(a*a + b*b);\n if (dist < distance) { // in case of 2 teleports\n distance = dist;\n tx = item[\"x\"].toInt();\n ty = item[\"y\"].toInt();\n }\n }\n });\n });\n }\n });\n return (x >= tx - size && x <= tx + 1) && (y >= ty - size && y <= ty + 1) && teleport == 1;\n }\n\n fitsCoord(x, y) {\n let mx, my;\n let id = this.boardUnitId;\n let size = this.getSize();\n for (mx = x; mx < x + size; mx++)\n for (my = y; my < y + size; my++) {\n if (board[mx])\n if (board[mx][my])\n if (board[mx][my][\"ref\"])\n if (board[mx][my]['type'] != 'unit' || board[mx][my]['ref'] != id) return false;\n if (mx < 0 || mx > 19 || my < 0 || my > 19) return false;\n }\n return true;\n }\n\n distToCoord(x, y) {\n let unitCoord = this.getLeftUpCoord();\n let movesLeft = this.getMovesLeft();\n return Math.max(Math.abs(unitCoord.x - x), Math.abs(unitCoord.y - y));\n }\n\n canFlyToCoord(x, y) {\n if (!this.fitsCoord(x, y)) {\n return false;\n }\n if (this.getKnight()) {\n return false;\n }\n if (board_units[this.boardUnitId].flying != 1) {\n return false;\n }\n\n // Check flight distance\n let movesLeft = this.getMovesLeft();\n if (this.distToCoord(x, y) > movesLeft) {\n return false;\n }\n\n return true;\n }\n\n directStepsToCoord(x, y) {\n let distToCoord = this.distToCoord(x, y);\n if (this.getKnight()) {\n return distToCoord / 2;\n }\n return distToCoord;\n }\n\n getMoveCmds(x, y) {\n // Check Unit can move\n if (!this.canMove()) {\n return [];\n }\n\n // Teleport Unit\n if (this.canTeleport(x, y) && this.fitsCoord(x, y)) {\n return [{\n 'x': x,\n 'y': y,\n 'action': 'm'\n }];\n }\n\n let targetX = x;\n let targetY = y;\n //Adjust move coords for big units\n let ux = this.getLeftUpCoord().x;\n let uy = this.getLeftUpCoord().y;\n if (this.isNear(x, y) && this.getSize() > 1 && !this.getKnight()) {\n if (x < ux) {\n targetX = x;\n } else if (x > (ux + this.getSize() - 1)) {\n targetX = x - this.getSize() + 1;\n } else {\n targetX = ux;\n }\n if (y < uy) {\n targetY = y;\n } else if (y > (uy + this.getSize() - 1)) {\n targetY = y - this.getSize() + 1;\n } else {\n targetY = uy;\n }\n }\n\n //Move unit according to path\n let path = this.getPath(targetX, targetY).slice(0, this.getMovesLeft());\n\n //Fly if cannot move to coords or it takes less moves to fly\n if ((path.length == 0 || path.length >= this.directStepsToCoord(targetX, targetY)) && this.canFlyToCoord(targetX, targetY)) {\n return [{\n 'x': targetX,\n 'y': targetY,\n 'action': 'm'\n }];\n }\n\n //If out of range\n let movesLeft = this.getMovesLeft();\n if ( (this.directStepsToCoord(targetX, targetY) > movesLeft) ) {\n return [];\n }\n\n //Check \"knight moves\" unit can go to targetX and targetY\n let found = path.find(function(p){\n return p['x'] == targetX && p['y'] == targetY;\n });\n if (!found) {\n return [];\n }\n\n return path;\n }\n\n getPath(x, y, renderObjects = true) {\n var path = []\n var not_reached = true;\n var path_board = new Array();\n var i = 0;\n var k = 0;\n var l = 0;\n var m = 0;\n var symbols = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'c', 'd', 'e', 'f', 'g', 'h', 'k', 'l', 'm');\n var id = this.boardUnitId\n var size = units[board_units[id][\"unit_id\"]]['size'].toInt()\n var knight = board_units[id][\"knight\"]\n //init path board\n for (i = 0; i < 20; i++) {\n path_board[i] = new Array();\n for (k = 0; k < 20; k++) {\n path_board[i][k] = '-';\n }\n }\n //fill path board\n if (renderObjects) {\n board.each(function(items, index) {\n if (items) items.each(function(item, index) {\n if (item) {\n if (item['type'] == 'unit' && item['ref'].toInt() == id); //this unit \n else if (item['type'] == 'obstacle') //cant attack obstacle\n path_board[item['x'].toInt()][item['y'].toInt()] = 'x';\n else if (item['type'] == 'unit') { //attack unit\n //fixing bug if we suddenly get not killed unit with not existing player (which already delted)\n if (!$chk(players_by_num[board_units[item['ref']]['player_num']])) {\n delete board[item['x'].toInt()][item['y'].toInt()];\n if ($chk(board_units[item['ref']])) delete board_units[item['ref']];\n } else if (board_units[id]['player_num'] == board_units[item['ref']]['player_num'] || players_by_num[board_units[id]['player_num']]['team'] == players_by_num[board_units[item['ref']]['player_num']]['team']) path_board[item['x'].toInt()][item['y'].toInt()] = 'x';\n else path_board[item['x'].toInt()][item['y'].toInt()] = 'u';\n } else { //buildings, castle\n if ($chk(players_by_num[board_buildings[item['ref']]['player_num']])) { //player num 9 for trees,moat ... doesnt exists\n if (board_units[id]['player_num'] == board_buildings[item['ref']]['player_num'] || players_by_num[board_units[id]['player_num']]['team'] == players_by_num[board_buildings[item['ref']]['player_num']]['team']) path_board[item['x'].toInt()][item['y'].toInt()] = 'x';\n else path_board[item['x'].toInt()][item['y'].toInt()] = 'b';\n } else\n if (board_buildings[item['ref']]['health'] > 0) //can kill bridge\n path_board[item['x'].toInt()][item['y'].toInt()] = 'b';\n else\n path_board[item['x'].toInt()][item['y'].toInt()] = 'x';\n }\n }\n });\n });\n }\n\n var target_coord = path_board[x][y];\n if (path_board[x][y] != 't') path_board[x][y] = 't';\n var leftUpCoord = this.getLeftUpCoord();\n var ux = leftUpCoord.x;\n var uy = leftUpCoord.y;\n path_board[ux][uy] = 'z';\n\n var cnear = false;\n var tnear = true;\n var step = 0;\n var cango = true;\n var t_in = false;\n var x_in = false;\n //start generating all avaible paths\n while (not_reached && tnear) {\n tnear = false;\n for (i = 0; i < 20; i++)\n for (k = 0; k < 20; k++) {\n cnear = false;\n if (path_board[i][k] == '-' || path_board[i][k] == 't') {\n if (knight) {\n for (l = i - 2; l < i + 3; l++)\n for (m = k - 2; m < k + 3; m++) {\n if (l >= 0 && l <= 19 && m >= 0 && m <= 19)\n if ((Math.abs(i - l) == 1 && Math.abs(k - m) == 2) || (Math.abs(i - l) == 2 && Math.abs(k - m) == 1))\n if ((step == 0 && path_board[l][m] == 'z') || (step != 0 && path_board[l][m] == symbols[step - 1]))\n if (size > 1) { //large unlts\n if (step == 0 && path_board[l][m] == 'z') {\n if (l == ux && m == uy) cnear = 1;\n } else cnear = 1;\n } else cnear = 1;\n }\n } else { //usual moves\n for (l = i - 1; l < i + 2; l++)\n for (m = k - 1; m < k + 2; m++)\n if (l >= 0 && l <= 19 && m >= 0 && m <= 19)\n if ((step == 0 && path_board[l][m] == 'z') || (step != 0 && path_board[l][m] == symbols[step - 1])) cnear = 1;\n }\n if (cnear) {\n if (path_board[i][k] == 't') { //found target unit(s)\n not_reached = false;\n } else {\n cango = true;\n if (size > 1) { //large units\n t_in = false;\n x_in = false;\n for (l = i; l < i + size; l++)\n for (m = k; m < k + size; m++) {\n if (l >= 0 && l <= 19 && m >= 0 && m <= 19) {\n if (path_board[l][m] == 'x') x_in = true;\n if (path_board[l][m] == 't') t_in = true;\n if (path_board[l][m] == 'x' || path_board[l][m] == 'u' || path_board[l][m] == 'b') cango = false;\n } else cango = false;\n }\n //if can hit target unit by hitting also another b or u - and target not free cell\n if (cango == false) {\n if ($chk(board[x]) && $chk(board[x][y]) && $chk(board[x][y]['ref']))\n if (t_in && !x_in) {\n cango = true;\n }\n }\n }\n if (cango) {\n path_board[i][k] = symbols[step];\n tnear = true;\n }\n }\n }\n } // =='-'\n }\n step++;\n }\n //show board\n //if (x==15 && y==1) for (i=0;i<20;i++)\t{\n // console.log(path_board[0][i],path_board[1][i],path_board[2][i],path_board[3][i],path_board[4][i],path_board[5][i],path_board[6][i],path_board[7][i],path_board[8][i],path_board[9][i],path_board[10][i],path_board[11][i],path_board[12][i],path_board[13][i],path_board[14][i],path_board[15][i],path_board[16][i],path_board[17][i],path_board[18][i],path_board[19][i]);\n //}\n //generate 1 path\n step--;\n path_moves = step + 1;\n var x_path = []\n var y_path = []\n var path_actions = []\n var u_x = []\n var u_y = []\n for (i = 0; i < 40; i++) x_path[i] = -1;\n for (i = 0; i < 40; i++) y_path[i] = -1;\n if (target_coord == 'x') return []; //no allias hit\n for (i = 0; i < 40; i++) path_actions[i] = 'm';\n var cur_x = x;\n var cur_y = y;\n x_path[step] = cur_x;\n y_path[step] = cur_y;\n cango = true;\n var doattack = false;\n if (size > 1 && target_coord == '-') { //large units\n for (l = x_path[step]; l < x_path[step] + size; l++)\n for (m = y_path[step]; m < y_path[step] + size; m++)\n if (l >= 0 && l <= 19 && m >= 0 && m <= 19) {\n if (path_board[l][m] == 'u' || path_board[l][m] == 'b') doattack = true;\n if (path_board[l][m] == 'x') cango = false;\n } else cango = false;\n } else if (target_coord == 'b' || target_coord == 'u') {\n doattack = true;\n }\n if ((!cango && !doattack)) {\n x_path[0] = -1;\n y_path[0] = -1;\n return [];\n }\n if (doattack) path_actions[step] = 'a';\n cnear = 0;\n var ufound = 0;\n var stop = 0;\n //generate random path to unit\n do {\n u_x = new Array();\n u_y = new Array();\n ufound = 0;\n var delta = 100;\n if (knight == 1) { //knight moves\n for (i = cur_x - 2; i < cur_x + 3; i++)\n for (j = cur_y - 2; j < cur_y + 3; j++) {\n if (i >= 0 && i <= 19 && j >= 0 && j <= 19)\n if ((Math.abs(cur_x - i) == 1 && Math.abs(cur_y - j) == 2) || (Math.abs(cur_x - i) == 2 && Math.abs(cur_y - j) == 1))\n if ((step == 0 && path_board[i][j] == 'z') || (step != 0 && path_board[i][j] == symbols[step - 1])) {\n u_x[ufound] = i;\n u_y[ufound] = j;\n ufound++;\n }\n }\n } else //usual moves\n for (i = cur_x - 1; i < cur_x + 2; i++)\n for (j = cur_y - 1; j < cur_y + 2; j++) {\n if (i >= 0 && i <= 19 && j >= 0 && j <= 19)\n if ((step == 0 && path_board[i][j] == 'z') || (step != 0 && path_board[i][j] == symbols[step - 1])) {\n u_x[ufound] = i;\n u_y[ufound] = j;\n ufound++;\n }\n }\n //pick random way\n /*if (ufound!=1)\t{\n\t\t\tufound = Math.floor(Math.random() * ufound);\n\t\t} else ufound--;*/\n\n //angle path choice\n l = Math.sqrt(Math.pow((cur_x - ux), 2) + Math.pow((cur_y - uy), 2));\n var sina = Math.abs(cur_x - ux) / l;\n\n var angl = 0; // general direction\n if (ux > cur_x && uy > cur_y) angl = Math.PI / 2 - Math.asin(sina);\n else if (cur_x == ux && uy > cur_y) angl = Math.PI / 2;\n else if (ux < cur_x && uy > cur_y) angl = Math.PI / 2 + Math.asin(sina);\n else if (cur_y == uy && ux < cur_x) angl = Math.PI;\n else if (ux < cur_x && uy < cur_y) angl = Math.PI + Math.PI / 2 - Math.asin(sina);\n else if (cur_x == ux && uy < cur_y) angl = Math.PI + Math.PI / 2;\n else if (ux > cur_x && uy < cur_y) angl = Math.PI * 1.5 + Math.asin(sina);\n u_x.each(function(item, index) {\n if ($chk(item)) {\n l = Math.sqrt(Math.pow((u_x[index] - cur_x), 2) + Math.pow((u_y[index] - cur_y), 2));\n sina = Math.abs(u_x[index] - cur_x) / l;\n\n var angl2 = 0; //possible direction\n if (u_x[index] > cur_x && u_y[index] > cur_y) angl2 = Math.PI / 2 - Math.asin(sina);\n else if (cur_x == u_x[index] && u_y[index] > cur_y) angl2 = Math.PI / 2;\n else if (u_x[index] < cur_x && u_y[index] > cur_y) angl2 = Math.PI / 2 + Math.asin(sina);\n else if (cur_y == u_y[index] && u_x[index] < cur_x) angl2 = Math.PI;\n else if (u_x[index] < cur_x && u_y[index] < cur_y) angl2 = Math.PI + Math.PI / 2 - Math.asin(sina);\n else if (cur_x == u_x[index] && u_y[index] < cur_y) angl2 = Math.PI + Math.PI / 2;\n else if (u_x[index] > cur_x && u_y[index] < cur_y) angl2 = Math.PI * 1.5 + Math.asin(sina);\n if (Math.abs(angl - angl2) < delta) {\n delta = Math.abs(angl - angl2);\n ufound = index;\n }\n if (angl2 == 0) {\n angl2 = Math.PI * 2;\n if (Math.abs(angl - angl2) < delta) {\n delta = Math.abs(angl - angl2);\n ufound = index;\n }\n }\n }\n });\n\n x_path[step - 1] = u_x[ufound];\n y_path[step - 1] = u_y[ufound];\n cur_x = u_x[ufound];\n cur_y = u_y[ufound];\n step--;\n if (step < 0) stop = 1;\n } while (stop == 0);\n if (size > 1 && (target_coord == 'b' || target_coord == 'u') && x_path[0] != -1 && y_path[0] != -1) {\n i = 0;\n var can_hit_earlier = false;\n while (x_path[i] != -1 && y_path[i] != -1 && !can_hit_earlier) {\n for (l = x_path[i]; l < x_path[i] + size; l++)\n for (m = y_path[i]; m < y_path[i] + size; m++)\n if (l >= 0 && l <= 19 && m >= 0 && m <= 19) {\n if (path_board[l][m] == 't') can_hit_earlier = true;\n }\n i++;\n }\n if (can_hit_earlier) {\n path_actions[i - 1] = 'a';\n x_path[i] = -1;\n y_path[i] = -1;\n }\n }\n\n // Compile to array of path objects\n i = 0;\n while (x_path[i] != -1 && y_path[i] != -1 && x_path[i] !== undefined) {\n path.push({\n 'x': x_path[i],\n 'y': y_path[i],\n 'action': path_actions[i]\n })\n i++\n }\n return path\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/unit.js","\"use strict\"\n\nexport class Building {\n constructor(id) {\n this.boardBuildingId = id\n }\n\n getPlayerNum() {\n return board_buildings[this.boardBuildingId]['player_num'];\n }\n\n getTeam() {\n if (players_by_num[this.getPlayerNum()] === undefined) { // no real for obstacles\n return -1;\n }\n return players_by_num[this.getPlayerNum()]['team'];\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/building.js","\"use strict\"\n\nimport {Unit} from \"./unit.js\";\nimport {Building} from \"./building.js\";\n\nexport class BoardObject {\n constructor(x, y) {\n this.boardObjectId = board[x][y]['ref']\n switch(board[x][y]['type']){\n case 'unit':\n this.object = new Unit(this.boardObjectId)\n break;\n default:\n this.object = new Building(this.boardObjectId)\n break;\n }\n }\n\n getPlayerNum() {\n return this.object.getPlayerNum();\n }\n\n getTeam() {\n return this.object.getTeam();\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/board_object.js","\"use strict\"\n\nexport class Cell {\n validCoords(x, y) {\n if (x < 0) return false;\n if (y < 0) return false;\n if (x > 19) return false;\n if (y > 19) return false;\n return true;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/cell.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap 9dc16a251252e4e7f814","webpack:///./game/mode/js/mode.js","webpack:///./game/mode/js/game.js","webpack:///./game/mode/js/player.js","webpack:///./game/mode/js/players_controller.js","webpack:///./game/mode/js/cards_controller.js","webpack:///./game/mode/js/turn_controller.js","webpack:///./game/mode/js/unit.js","webpack:///./game/mode/js/building.js","webpack:///./game/mode/js/board_object.js","webpack:///./game/mode/js/cell.js"],"names":["GameMode","Unit","Building","BoardObject","Cell","Game","Player","PlayersController","CardsController","TurnController","window","gameData","myPlayerNum","creation_date","game_id","mode_id","owner_id","status_id","time_restriction","title","type_id","data","player_num","toInt","name","gold","owner","team","players","playerData","player","push","playerNum","filter","_index","_arr","num","getPlayerByNum","find","cards","cardActionDoneInThisTurn","game","myTurn","getMyPlayer","mode_config","realtime_cards","canMakeAction","id","boardUnitId","units","board_units","players_by_num","getPlayerNum","ux","uy","board","each","items","index","item","x","y","$chk","nearSelectedUnit","cx","cy","size","getSize","distance","teleport","tx","ty","tid","board_buildings","buildings","my_player_num","a","b","dist","Math","sqrt","mx","my","unitCoord","getLeftUpCoord","movesLeft","getMovesLeft","max","abs","fitsCoord","getKnight","flying","distToCoord","canMove","canTeleport","targetX","targetY","isNear","path","getPath","slice","length","directStepsToCoord","canFlyToCoord","found","p","renderObjects","not_reached","path_board","Array","i","k","l","m","symbols","knight","target_coord","leftUpCoord","cnear","tnear","step","cango","t_in","x_in","path_moves","x_path","y_path","path_actions","u_x","u_y","cur_x","cur_y","doattack","ufound","stop","delta","j","pow","sina","angl","PI","asin","angl2","can_hit_earlier","undefined","boardBuildingId","boardObjectId","object","getTeam"],"mappings":"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","file":"mode.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 9dc16a251252e4e7f814","\"use strict\"\n\nimport {Game} from \"./game.js\"\nimport {Player} from \"./player.js\"\nimport {PlayersController} from \"./players_controller.js\"\nimport {CardsController} from \"./cards_controller.js\"\nimport {TurnController} from \"./turn_controller.js\"\nimport {Unit} from \"./unit.js\"\nimport {Building} from \"./building.js\"\nimport {BoardObject} from \"./board_object.js\"\nimport {Cell} from \"./cell.js\"\n\nclass GameMode {\n constructor() {\n this.Unit = Unit\n this.Building = Building\n this.BoardObject = BoardObject\n this.Cell = Cell\n this.Game = Game\n this.Player = Player\n this.PlayersController = PlayersController\n this.CardsController = CardsController\n this.TurnController = TurnController\n }\n}\n\nwindow.GameMode = new GameMode()\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/mode.js","\"use strict\"\n\nexport class Game {\n constructor(gameData, myPlayerNum) {\n this.creation_date = gameData['creation_date']\n this.game_id = gameData['game_id']\n this.mode_id = gameData['mode_id']\n this.owner_id = gameData['owner_id']\n this.status_id = gameData['status_id']\n this.time_restriction = gameData['time_restriction']\n this.title = gameData['title']\n this.type_id = gameData['type_id']\n\n this.PlayersController = new window.GameMode.PlayersController(myPlayerNum)\n this.CardsController = new window.GameMode.CardsController()\n this.TurnController = new window.GameMode.TurnController()\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/game.js","\"use strict\"\n\nexport class Player {\n constructor(data) {\n this.player_num = data['player_num'].toInt()\n this.name = data['name']\n this.gold = data['gold'].toInt()\n this.owner = data['owner'].toInt()\n this.team = data['team'].toInt()\n }\n\n setGold(gold) {\n this.gold = gold.toInt()\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/player.js","\"use strict\"\n\nexport class PlayersController {\n constructor(myPlayerNum) {\n this.players = []\n this.myPlayerNum = myPlayerNum.toInt()\n }\n\n addPlayer(playerData) {\n player = new window.GameMode.Player(playerData)\n this.players.push(player)\n }\n\n removePlayer(playerNum) {\n this.players = this.players.filter((player, _index, _arr) => {\n return player.num != playerNum\n })\n }\n\n getMyPlayer() {\n return this.getPlayerByNum(this.myPlayerNum)\n }\n\n isMyPlayer(playerNum) {\n return playerNum.toInt() == this.myPlayerNum\n }\n\n getPlayerByNum(playerNum) {\n return this.players.find((player) => {\n return player.player_num == playerNum\n })\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/players_controller.js","\"use strict\"\n\nexport class CardsController {\n constructor() {\n this.cards = []\n this.cardActionDoneInThisTurn = false\n }\n\n setCardActionDoneInThisTurn(cardActionDoneInThisTurn) {\n this.cardActionDoneInThisTurn = cardActionDoneInThisTurn\n }\n\n canMakeAction() {\n let game = window.Game\n return (game.TurnController.myTurn && !game.CardsController.cardActionDoneInThisTurn)\n }\n\n canBuy() {\n return window.Game.PlayersController.getMyPlayer()['gold'].toInt() >= mode_config[\"card cost\"]\n && (realtime_cards || this.canMakeAction());\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/cards_controller.js","\"use strict\"\n\nexport class TurnController {\n constructor() {\n this.myTurn = false\n }\n\n setMyTurn(myTurn) {\n this.myTurn = myTurn\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/turn_controller.js","\"use strict\"\n\nexport class Unit {\n constructor(id) {\n this.boardUnitId = id\n }\n\n getSize() {\n return units[board_units[this.boardUnitId][\"unit_id\"]]['size'].toInt();\n }\n\n getMovesLeft() {\n return board_units[this.boardUnitId][\"moves_left\"].toInt();\n }\n\n getPlayerNum() {\n return board_units[this.boardUnitId]['player_num'];\n }\n\n getTeam() {\n return players_by_num[this.getPlayerNum()]['team'];\n }\n\n getKnight() {\n var id = this.boardUnitId\n return board_units[id][\"knight\"] == 1\n }\n\n getLeftUpCoord() {\n let id = this.boardUnitId;\n let ux = 9999999;\n let uy = 9999999;\n board.each(function(items, index) {\n if (items) items.each(function(item, index) {\n if (item)\n if (item[\"ref\"] == id && item[\"type\"] == \"unit\") {\n if (item[\"x\"].toInt() < ux) ux = item[\"x\"].toInt();\n if (item[\"y\"].toInt() < uy) uy = item[\"y\"].toInt();\n }\n });\n });\n return {x: ux, y: uy}\n }\n\n canMove() {\n let id = this.boardUnitId;\n return board_units[id][\"moves_left\"].toInt() > 0 && !$chk(board_units[id]['paralich'])\n }\n\n isNear(x, y) {\n let id = this.boardUnitId;\n var nearSelectedUnit = false;\n var cx;\n var cy;\n for (cx = x - 1; cx < x + 2; cx++)\n for (cy = y - 1; cy < y + 2; cy++) {\n if (board[cx])\n if (board[cx][cy])\n if (board[cx][cy][\"ref\"] == id && board[cx][cy][\"type\"] == 'unit') {\n nearSelectedUnit = true;\n }\n }\n return nearSelectedUnit;\n }\n\n canTeleport(x, y) {\n let id = this.boardUnitId;\n let size = this.getSize();\n var distance = 999999;\n var teleport = 0;\n var tx = 0;\n var ty = 0;\n var tid;\n board_buildings.each(function(item, index) {\n if (item)\n if ($chk(players_by_num[item['player_num']])) //player num 9 for trees,moat ... doesnt exists\n if (board_units[id]['magic_immunity'] != 1 && buildings[item[\"building_id\"]]['ui_code'] == 'teleport' && (item['player_num'] == my_player_num || players_by_num[item['player_num']]['team'] == players_by_num[my_player_num]['team'])) { //this is my Teleport or my ally and unit is not golem(magic_immunity==1)\n tid = item[\"id\"];\n teleport = 1;\n //get coords\n board.each(function(items, index) {\n if (items) items.each(function(item, index) {\n if (item)\n if (item[\"ref\"] == tid && item[\"type\"] == \"building\") {\n var a = x - item[\"x\"].toInt();\n var b = y - item[\"y\"].toInt();\n var dist = Math.sqrt(a*a + b*b);\n if (dist < distance) { // in case of 2 teleports\n distance = dist;\n tx = item[\"x\"].toInt();\n ty = item[\"y\"].toInt();\n }\n }\n });\n });\n }\n });\n return (x >= tx - size && x <= tx + 1) && (y >= ty - size && y <= ty + 1) && teleport == 1;\n }\n\n fitsCoord(x, y) {\n let mx, my;\n let id = this.boardUnitId;\n let size = this.getSize();\n for (mx = x; mx < x + size; mx++)\n for (my = y; my < y + size; my++) {\n if (board[mx])\n if (board[mx][my])\n if (board[mx][my][\"ref\"])\n if (board[mx][my]['type'] != 'unit' || board[mx][my]['ref'] != id) return false;\n if (mx < 0 || mx > 19 || my < 0 || my > 19) return false;\n }\n return true;\n }\n\n distToCoord(x, y) {\n let unitCoord = this.getLeftUpCoord();\n let movesLeft = this.getMovesLeft();\n return Math.max(Math.abs(unitCoord.x - x), Math.abs(unitCoord.y - y));\n }\n\n canFlyToCoord(x, y) {\n if (!this.fitsCoord(x, y)) {\n return false;\n }\n if (this.getKnight()) {\n return false;\n }\n if (board_units[this.boardUnitId].flying != 1) {\n return false;\n }\n\n // Check flight distance\n let movesLeft = this.getMovesLeft();\n if (this.distToCoord(x, y) > movesLeft) {\n return false;\n }\n\n return true;\n }\n\n directStepsToCoord(x, y) {\n let distToCoord = this.distToCoord(x, y);\n if (this.getKnight()) {\n return distToCoord / 2;\n }\n return distToCoord;\n }\n\n getMoveCmds(x, y) {\n // Check Unit can move\n if (!this.canMove()) {\n return [];\n }\n\n // Teleport Unit\n if (this.canTeleport(x, y) && this.fitsCoord(x, y)) {\n return [{\n 'x': x,\n 'y': y,\n 'action': 'm'\n }];\n }\n\n let targetX = x;\n let targetY = y;\n //Adjust move coords for big units\n let ux = this.getLeftUpCoord().x;\n let uy = this.getLeftUpCoord().y;\n if (this.isNear(x, y) && this.getSize() > 1 && !this.getKnight()) {\n if (x < ux) {\n targetX = x;\n } else if (x > (ux + this.getSize() - 1)) {\n targetX = x - this.getSize() + 1;\n } else {\n targetX = ux;\n }\n if (y < uy) {\n targetY = y;\n } else if (y > (uy + this.getSize() - 1)) {\n targetY = y - this.getSize() + 1;\n } else {\n targetY = uy;\n }\n }\n\n //Move unit according to path\n let path = this.getPath(targetX, targetY).slice(0, this.getMovesLeft());\n\n //Fly if cannot move to coords or it takes less moves to fly\n if ((path.length == 0 || path.length >= this.directStepsToCoord(targetX, targetY)) && this.canFlyToCoord(targetX, targetY)) {\n return [{\n 'x': targetX,\n 'y': targetY,\n 'action': 'm'\n }];\n }\n\n //If out of range\n let movesLeft = this.getMovesLeft();\n if ( (this.directStepsToCoord(targetX, targetY) > movesLeft) ) {\n return [];\n }\n\n //Check \"knight moves\" unit can go to targetX and targetY\n let found = path.find(function(p){\n return p['x'] == targetX && p['y'] == targetY;\n });\n if (!found) {\n return [];\n }\n\n return path;\n }\n\n getPath(x, y, renderObjects = true) {\n var path = []\n var not_reached = true;\n var path_board = new Array();\n var i = 0;\n var k = 0;\n var l = 0;\n var m = 0;\n var symbols = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'c', 'd', 'e', 'f', 'g', 'h', 'k', 'l', 'm');\n var id = this.boardUnitId\n var size = units[board_units[id][\"unit_id\"]]['size'].toInt()\n var knight = board_units[id][\"knight\"]\n //init path board\n for (i = 0; i < 20; i++) {\n path_board[i] = new Array();\n for (k = 0; k < 20; k++) {\n path_board[i][k] = '-';\n }\n }\n //fill path board\n if (renderObjects) {\n board.each(function(items, index) {\n if (items) items.each(function(item, index) {\n if (item) {\n if (item['type'] == 'unit' && item['ref'].toInt() == id); //this unit \n else if (item['type'] == 'obstacle') //cant attack obstacle\n path_board[item['x'].toInt()][item['y'].toInt()] = 'x';\n else if (item['type'] == 'unit') { //attack unit\n //fixing bug if we suddenly get not killed unit with not existing player (which already delted)\n if (!$chk(players_by_num[board_units[item['ref']]['player_num']])) {\n delete board[item['x'].toInt()][item['y'].toInt()];\n if ($chk(board_units[item['ref']])) delete board_units[item['ref']];\n } else if (board_units[id]['player_num'] == board_units[item['ref']]['player_num'] || players_by_num[board_units[id]['player_num']]['team'] == players_by_num[board_units[item['ref']]['player_num']]['team']) path_board[item['x'].toInt()][item['y'].toInt()] = 'x';\n else path_board[item['x'].toInt()][item['y'].toInt()] = 'u';\n } else { //buildings, castle\n if ($chk(players_by_num[board_buildings[item['ref']]['player_num']])) { //player num 9 for trees,moat ... doesnt exists\n if (board_units[id]['player_num'] == board_buildings[item['ref']]['player_num'] || players_by_num[board_units[id]['player_num']]['team'] == players_by_num[board_buildings[item['ref']]['player_num']]['team']) path_board[item['x'].toInt()][item['y'].toInt()] = 'x';\n else path_board[item['x'].toInt()][item['y'].toInt()] = 'b';\n } else\n if (board_buildings[item['ref']]['health'] > 0) //can kill bridge\n path_board[item['x'].toInt()][item['y'].toInt()] = 'b';\n else\n path_board[item['x'].toInt()][item['y'].toInt()] = 'x';\n }\n }\n });\n });\n }\n\n var target_coord = path_board[x][y];\n if (path_board[x][y] != 't') path_board[x][y] = 't';\n var leftUpCoord = this.getLeftUpCoord();\n var ux = leftUpCoord.x;\n var uy = leftUpCoord.y;\n path_board[ux][uy] = 'z';\n\n var cnear = false;\n var tnear = true;\n var step = 0;\n var cango = true;\n var t_in = false;\n var x_in = false;\n //start generating all avaible paths\n while (not_reached && tnear) {\n tnear = false;\n for (i = 0; i < 20; i++)\n for (k = 0; k < 20; k++) {\n cnear = false;\n if (path_board[i][k] == '-' || path_board[i][k] == 't') {\n if (knight) {\n for (l = i - 2; l < i + 3; l++)\n for (m = k - 2; m < k + 3; m++) {\n if (l >= 0 && l <= 19 && m >= 0 && m <= 19)\n if ((Math.abs(i - l) == 1 && Math.abs(k - m) == 2) || (Math.abs(i - l) == 2 && Math.abs(k - m) == 1))\n if ((step == 0 && path_board[l][m] == 'z') || (step != 0 && path_board[l][m] == symbols[step - 1]))\n if (size > 1) { //large unlts\n if (step == 0 && path_board[l][m] == 'z') {\n if (l == ux && m == uy) cnear = 1;\n } else cnear = 1;\n } else cnear = 1;\n }\n } else { //usual moves\n for (l = i - 1; l < i + 2; l++)\n for (m = k - 1; m < k + 2; m++)\n if (l >= 0 && l <= 19 && m >= 0 && m <= 19)\n if ((step == 0 && path_board[l][m] == 'z') || (step != 0 && path_board[l][m] == symbols[step - 1])) cnear = 1;\n }\n if (cnear) {\n if (path_board[i][k] == 't') { //found target unit(s)\n not_reached = false;\n } else {\n cango = true;\n if (size > 1) { //large units\n t_in = false;\n x_in = false;\n for (l = i; l < i + size; l++)\n for (m = k; m < k + size; m++) {\n if (l >= 0 && l <= 19 && m >= 0 && m <= 19) {\n if (path_board[l][m] == 'x') x_in = true;\n if (path_board[l][m] == 't') t_in = true;\n if (path_board[l][m] == 'x' || path_board[l][m] == 'u' || path_board[l][m] == 'b') cango = false;\n } else cango = false;\n }\n //if can hit target unit by hitting also another b or u - and target not free cell\n if (cango == false) {\n if ($chk(board[x]) && $chk(board[x][y]) && $chk(board[x][y]['ref']))\n if (t_in && !x_in) {\n cango = true;\n }\n }\n }\n if (cango) {\n path_board[i][k] = symbols[step];\n tnear = true;\n }\n }\n }\n } // =='-'\n }\n step++;\n }\n //show board\n //if (x==15 && y==1) for (i=0;i<20;i++)\t{\n // console.log(path_board[0][i],path_board[1][i],path_board[2][i],path_board[3][i],path_board[4][i],path_board[5][i],path_board[6][i],path_board[7][i],path_board[8][i],path_board[9][i],path_board[10][i],path_board[11][i],path_board[12][i],path_board[13][i],path_board[14][i],path_board[15][i],path_board[16][i],path_board[17][i],path_board[18][i],path_board[19][i]);\n //}\n //generate 1 path\n step--;\n path_moves = step + 1;\n var x_path = []\n var y_path = []\n var path_actions = []\n var u_x = []\n var u_y = []\n for (i = 0; i < 40; i++) x_path[i] = -1;\n for (i = 0; i < 40; i++) y_path[i] = -1;\n if (target_coord == 'x') return []; //no allias hit\n for (i = 0; i < 40; i++) path_actions[i] = 'm';\n var cur_x = x;\n var cur_y = y;\n x_path[step] = cur_x;\n y_path[step] = cur_y;\n cango = true;\n var doattack = false;\n if (size > 1 && target_coord == '-') { //large units\n for (l = x_path[step]; l < x_path[step] + size; l++)\n for (m = y_path[step]; m < y_path[step] + size; m++)\n if (l >= 0 && l <= 19 && m >= 0 && m <= 19) {\n if (path_board[l][m] == 'u' || path_board[l][m] == 'b') doattack = true;\n if (path_board[l][m] == 'x') cango = false;\n } else cango = false;\n } else if (target_coord == 'b' || target_coord == 'u') {\n doattack = true;\n }\n if ((!cango && !doattack)) {\n x_path[0] = -1;\n y_path[0] = -1;\n return [];\n }\n if (doattack) path_actions[step] = 'a';\n cnear = 0;\n var ufound = 0;\n var stop = 0;\n //generate random path to unit\n do {\n u_x = new Array();\n u_y = new Array();\n ufound = 0;\n var delta = 100;\n if (knight == 1) { //knight moves\n for (i = cur_x - 2; i < cur_x + 3; i++)\n for (j = cur_y - 2; j < cur_y + 3; j++) {\n if (i >= 0 && i <= 19 && j >= 0 && j <= 19)\n if ((Math.abs(cur_x - i) == 1 && Math.abs(cur_y - j) == 2) || (Math.abs(cur_x - i) == 2 && Math.abs(cur_y - j) == 1))\n if ((step == 0 && path_board[i][j] == 'z') || (step != 0 && path_board[i][j] == symbols[step - 1])) {\n u_x[ufound] = i;\n u_y[ufound] = j;\n ufound++;\n }\n }\n } else //usual moves\n for (i = cur_x - 1; i < cur_x + 2; i++)\n for (j = cur_y - 1; j < cur_y + 2; j++) {\n if (i >= 0 && i <= 19 && j >= 0 && j <= 19)\n if ((step == 0 && path_board[i][j] == 'z') || (step != 0 && path_board[i][j] == symbols[step - 1])) {\n u_x[ufound] = i;\n u_y[ufound] = j;\n ufound++;\n }\n }\n //pick random way\n /*if (ufound!=1)\t{\n\t\t\tufound = Math.floor(Math.random() * ufound);\n\t\t} else ufound--;*/\n\n //angle path choice\n l = Math.sqrt(Math.pow((cur_x - ux), 2) + Math.pow((cur_y - uy), 2));\n var sina = Math.abs(cur_x - ux) / l;\n\n var angl = 0; // general direction\n if (ux > cur_x && uy > cur_y) angl = Math.PI / 2 - Math.asin(sina);\n else if (cur_x == ux && uy > cur_y) angl = Math.PI / 2;\n else if (ux < cur_x && uy > cur_y) angl = Math.PI / 2 + Math.asin(sina);\n else if (cur_y == uy && ux < cur_x) angl = Math.PI;\n else if (ux < cur_x && uy < cur_y) angl = Math.PI + Math.PI / 2 - Math.asin(sina);\n else if (cur_x == ux && uy < cur_y) angl = Math.PI + Math.PI / 2;\n else if (ux > cur_x && uy < cur_y) angl = Math.PI * 1.5 + Math.asin(sina);\n u_x.each(function(item, index) {\n if ($chk(item)) {\n l = Math.sqrt(Math.pow((u_x[index] - cur_x), 2) + Math.pow((u_y[index] - cur_y), 2));\n sina = Math.abs(u_x[index] - cur_x) / l;\n\n var angl2 = 0; //possible direction\n if (u_x[index] > cur_x && u_y[index] > cur_y) angl2 = Math.PI / 2 - Math.asin(sina);\n else if (cur_x == u_x[index] && u_y[index] > cur_y) angl2 = Math.PI / 2;\n else if (u_x[index] < cur_x && u_y[index] > cur_y) angl2 = Math.PI / 2 + Math.asin(sina);\n else if (cur_y == u_y[index] && u_x[index] < cur_x) angl2 = Math.PI;\n else if (u_x[index] < cur_x && u_y[index] < cur_y) angl2 = Math.PI + Math.PI / 2 - Math.asin(sina);\n else if (cur_x == u_x[index] && u_y[index] < cur_y) angl2 = Math.PI + Math.PI / 2;\n else if (u_x[index] > cur_x && u_y[index] < cur_y) angl2 = Math.PI * 1.5 + Math.asin(sina);\n if (Math.abs(angl - angl2) < delta) {\n delta = Math.abs(angl - angl2);\n ufound = index;\n }\n if (angl2 == 0) {\n angl2 = Math.PI * 2;\n if (Math.abs(angl - angl2) < delta) {\n delta = Math.abs(angl - angl2);\n ufound = index;\n }\n }\n }\n });\n\n x_path[step - 1] = u_x[ufound];\n y_path[step - 1] = u_y[ufound];\n cur_x = u_x[ufound];\n cur_y = u_y[ufound];\n step--;\n if (step < 0) stop = 1;\n } while (stop == 0);\n if (size > 1 && (target_coord == 'b' || target_coord == 'u') && x_path[0] != -1 && y_path[0] != -1) {\n i = 0;\n var can_hit_earlier = false;\n while (x_path[i] != -1 && y_path[i] != -1 && !can_hit_earlier) {\n for (l = x_path[i]; l < x_path[i] + size; l++)\n for (m = y_path[i]; m < y_path[i] + size; m++)\n if (l >= 0 && l <= 19 && m >= 0 && m <= 19) {\n if (path_board[l][m] == 't') can_hit_earlier = true;\n }\n i++;\n }\n if (can_hit_earlier) {\n path_actions[i - 1] = 'a';\n x_path[i] = -1;\n y_path[i] = -1;\n }\n }\n\n // Compile to array of path objects\n i = 0;\n while (x_path[i] != -1 && y_path[i] != -1 && x_path[i] !== undefined) {\n path.push({\n 'x': x_path[i],\n 'y': y_path[i],\n 'action': path_actions[i]\n })\n i++\n }\n return path\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/unit.js","\"use strict\"\n\nexport class Building {\n constructor(id) {\n this.boardBuildingId = id\n }\n\n getPlayerNum() {\n return board_buildings[this.boardBuildingId]['player_num'];\n }\n\n getTeam() {\n if (players_by_num[this.getPlayerNum()] === undefined) { // no real for obstacles\n return -1;\n }\n return players_by_num[this.getPlayerNum()]['team'];\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/building.js","\"use strict\"\n\nimport {Unit} from \"./unit.js\";\nimport {Building} from \"./building.js\";\n\nexport class BoardObject {\n constructor(x, y) {\n this.boardObjectId = board[x][y]['ref']\n switch(board[x][y]['type']){\n case 'unit':\n this.object = new Unit(this.boardObjectId)\n break;\n default:\n this.object = new Building(this.boardObjectId)\n break;\n }\n }\n\n getPlayerNum() {\n return this.object.getPlayerNum();\n }\n\n getTeam() {\n return this.object.getTeam();\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/board_object.js","\"use strict\"\n\nexport class Cell {\n validCoords(x, y) {\n if (x < 0) return false;\n if (y < 0) return false;\n if (x > 19) return false;\n if (y > 19) return false;\n return true;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./game/mode/js/cell.js"],"sourceRoot":""} \ No newline at end of file