Advertisement
Guest User

Untitled

a guest
Jul 26th, 2016
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.89 KB | None | 0 0
  1. package com.playcus.slots.game.model
  2. {
  3. import com.playcus.slots.core.managers.EventsManager;
  4.  
  5. public class GameModel
  6. {
  7.  
  8. public const slotsShowedOnReel:int = 3;
  9.  
  10. private var _currentLines:int;
  11. public function get currentLines():int { return _currentLines; };
  12. public function set currentLines(value:int):void {
  13. _currentLines = value;
  14. EventsManager.instance.dispatchEventWith(EventsManager.USER_LINES_UPDATE);
  15. };
  16.  
  17. private var _betPos:int;
  18. public function get betPos():int { return _betPos;}
  19. public function set betPos(value:int):void
  20. {
  21. if(value < 0 || value >= _bets.length)
  22. {
  23. return;
  24. }
  25.  
  26. _betPos = value;
  27. EventsManager.instance.dispatchEventWith(EventsManager.USER_BET_UPDATE);
  28. }
  29.  
  30. public function get currentBet():Number { return _bets[_betPos]; }
  31.  
  32. public function get totalCurBet():Number { return Math.round(10 * currentBet * _currentLines)/10; }
  33.  
  34. public function get totalMaxBet():Number { return maxBet * _lines.length; }
  35.  
  36. private var _lastWin:Number = 0;
  37. public function get lastWin():Number { return _lastWin; }
  38. public function set lastWin(value: Number):void {
  39.  
  40. _lastWin = value;
  41. EventsManager.instance.dispatchEventWith(EventsManager.WIN_UPDATE);
  42. }
  43.  
  44. private var _timeToStopAndStart:Number;
  45. public function get timeToStopAndStart():Number { return _timeToStopAndStart};
  46.  
  47. private var _moveSymbolsForStop:int;
  48. public function get moveSymbolsForStop():int{ return _moveSymbolsForStop; }
  49.  
  50. private var _moveSpeed:int;
  51. public function get moveSpeed():int { return _moveSpeed};
  52.  
  53. private var _autoSpeed:int;
  54. public function get autoSpeed():int { return _autoSpeed};
  55. private var _autoTime:int;
  56. public function get autoTime():int { return _autoTime};
  57. private var _autoTimeOfShowAllWinLines:int;
  58. public function get autoTimeOfShowAllWinLines():int { return _autoTimeOfShowAllWinLines};
  59.  
  60. private var _timeOfShowAllWinLines:int;
  61. public function get timeOfShowAllWinLines():int { return _timeOfShowAllWinLines};
  62.  
  63. private var _timeOfShowWinLine:int;
  64. public function get timeOfShowWinLine():int { return _timeOfShowWinLine};
  65.  
  66. public function get reelsCount():int { return _reelsConfig.length};
  67.  
  68. public function get maxBet():Number { return _bets[_bets.length - 1]};
  69.  
  70. private var _bets:Array;
  71. public function get bets():Array { return _bets};
  72.  
  73. private var _isAutoGame:Boolean;
  74. public function get isAutoGame():Boolean { return _isAutoGame;}
  75. public function set isAutoGame(value:Boolean):void
  76. {
  77. _isAutoGame = value;
  78. if(!value)
  79. {
  80. autoSpinCounter = 0;
  81. }
  82. }
  83.  
  84. private var _autoSpinCounter:int;
  85. public function get autoSpinCounter():int { return _autoSpinCounter};
  86. public function set autoSpinCounter(value: int):void
  87. {
  88. _autoSpinCounter = value;
  89. if(value <= 0)
  90. {
  91. _isAutoGame = false;
  92. }
  93. EventsManager.instance.dispatchEventWith(EventsManager.AUTOGAME_COUNTER_UPDATE);
  94. }
  95.  
  96. private var _isFreeGame:Boolean;
  97. public function get isFreeGame():Boolean { return _isFreeGame;}
  98. public function set isFreeGame(value:Boolean):void
  99. {
  100. _isFreeGame = value;
  101. if(!value)
  102. {
  103. _freeSpinCounter = 0;
  104. }
  105. EventsManager.instance.dispatchEventWith(EventsManager.FREEGAME_MODE_UPDATE);
  106. }
  107.  
  108. private var _freeSpinCounter:int;
  109. public function get freeSpinCounter():int { return _freeSpinCounter};
  110. public function set freeSpinCounter(value: int):void
  111. {
  112. _freeSpinCounter = value;
  113. if(value <= 0)
  114. {
  115. isFreeGame = false;
  116. }
  117. EventsManager.instance.dispatchEventWith(EventsManager.FREEGAME_COUNTER_UPDATE);
  118. }
  119.  
  120. public function get isGameWithoutUser():Boolean
  121. {
  122. return _isAutoGame || _isFreeGame;
  123. }
  124.  
  125. private var _results:Vector.<Array>;
  126.  
  127. private var _currentSpinResult_1_line:Array;
  128. public function get currentSpinResult_1_line():Array
  129. {
  130. return _currentSpinResult_1_line;
  131. }
  132.  
  133. private var _rotationTime:Number;
  134. public function get rotationTime():Number { return _rotationTime};
  135.  
  136. private var _simpleComb:Object;
  137. public function get simpleComb():Object
  138. {
  139. return _simpleComb;
  140. }
  141.  
  142. private var _lines:Array;
  143. public function get lines():Array
  144. {
  145. return _lines;
  146. }
  147.  
  148. private var _reelsConfig:Array;
  149. public function get reelsConfig():Array
  150. {
  151. return _isFreeGame ? _freeReelsConfig : _reelsConfig;
  152. }
  153.  
  154. private var _freeReelsConfig:Array;
  155. public function get freeReelsConfig():Array
  156. {
  157. return _freeReelsConfig;
  158. }
  159.  
  160. private var _bonusGameConfig:Object;
  161. public function get bonusGameConfig():Object { return _bonusGameConfig; }
  162.  
  163. private var _bonusWin:int = 0;
  164. public function get bonusWin():int { return _bonusWin; }
  165. public function set bonusWin(value: int):void { _bonusWin = value; }
  166. public function get bonusTotalWin():Number { return Math.round(10 * _bonusWin * currentBet)/10; }
  167.  
  168. private var _gi:String;
  169. public function get gi():String
  170. {
  171. return _gi;
  172. }
  173.  
  174. public function GameModel(gameSettings: Object, gameConfig:Object)
  175. {
  176. _gi = gameSettings ? gameSettings.gi : null;
  177. _timeToStopAndStart = gameConfig.startStopTime; // время старта и остановки анимации вращения (defaul 0.5 - полсекунды)
  178. _moveSpeed = gameConfig.speed; // скорость вращения барабана в пикселях (defaul 40 пикселей)
  179. _rotationTime = gameConfig.spinTime;
  180.  
  181. _bets = gameConfig.bets; // массив возможных ставок по возрастанию
  182. _betPos = 0;
  183.  
  184. _autoSpeed = gameConfig.autoSpeed; // скорость ващения барабана в пикселях в автоигре (defaul 50 пикселей)
  185. _autoTime = gameConfig.autoTime; // задержка между окончанием и стартом спина в автоигре
  186. _autoTimeOfShowAllWinLines = gameConfig.autoTimeOfShowAllWinLines; // время на показ всех выигрышных линий и символо в автоигре
  187. _timeOfShowWinLine = gameConfig.timeOfShowWinLine; // время отоброжения одной из выигрышных линий в стандартном спине
  188. _timeOfShowAllWinLines = gameConfig.timeOfShowAllWinLines; // время отоброжения всех выигрышных линий и символов в стандартном спине, перед стартом поочередной анимации линий
  189. _moveSymbolsForStop = gameConfig.moveSymbolsForStop; // кол-во слотов, которые отоброзятся перед остановкой следующего барабана,
  190.  
  191. _results = new <Array>[ [2,14,3,2,0]/*,
  192. [0,0,3,6,5],
  193. [1,1,1,1,1],
  194. [1,2,3,1,2],
  195. [0,0,0,0,0],
  196. [5,5,5,5,5],
  197. [6,6,6,6,6]*/
  198. ];
  199.  
  200. _simpleComb = gameConfig.combination; // массив комбинаций для символов { "1"(тип символа) : [0, 0, 1(награда за три символа в линии, при расчете выиграша умножается на текущую ставку), 2(награда за четыре символа в линии, умножается на текущую ставку), 4].... }
  201.  
  202. _lines = gameConfig.lines; // массив выигрышных линий [[5,6,7,8,9], [1,2,3,4,5] ....] (в слоте из 5 барабанов айди первого символа 1, последнего 15)
  203.  
  204. _reelsConfig = gameConfig.reels; // массив лент барабанов [[1,2,3,4,5,6,7,8,9], [1,2..... ] длина массива равна кол-ву барабанов, длина элемента(массива) в массиве равна кол-ву позиций в ленте. в ленте указываются айдишники символов
  205. _freeReelsConfig = gameConfig.freereels ? gameConfig.freereels : gameConfig.reels;
  206. convertReelsConfig(_reelsConfig);
  207. convertReelsConfig(_freeReelsConfig);
  208.  
  209.  
  210. _currentLines = _lines.length;
  211. }
  212.  
  213. public function nextSpinResult():void
  214. {
  215. _currentSpinResult_1_line = _results.shift();
  216. if(!_currentSpinResult_1_line)
  217. {
  218. _currentSpinResult_1_line = [];
  219. for (var i:int = 0; i < reelsCount; i++)
  220. _currentSpinResult_1_line.push(Math.floor(Math.random() * (reelsConfig[i] as Array).length));
  221. }
  222. }
  223.  
  224. public function get spinResultSymbolsIds():Vector.<int>
  225. {
  226. var arr:Vector.<int> = new Vector.<int>();
  227. var position:int;
  228. for (var i:int = 0; i < slotsShowedOnReel; i++)
  229. {
  230. for (var j:int = 0; j < reelsCount; j++)
  231. {
  232. if(i == 0)
  233. {
  234. position = nextPos(currentSpinResult_1_line[j], reelsConfig[j].length);
  235. }else if(i == 1)
  236. {
  237.  
  238. position = currentSpinResult_1_line[j];
  239. }else if(i == 2)
  240. {
  241. position = prevPos(currentSpinResult_1_line[j], reelsConfig[j].length);
  242. }
  243. arr.push(reelsConfig[j][position]); // push id of symbol(slot)
  244. }
  245. }
  246. return arr;
  247. }
  248. private function prevPos(curPos:int, maxPos:int):int
  249. {
  250. if(curPos == 0) return maxPos - 1;
  251. return curPos - 1;
  252. }
  253.  
  254. private function nextPos(curPos:int, maxPos:int):int
  255. {
  256. if(curPos == maxPos - 1) return 0;
  257. return curPos + 1;
  258. }
  259.  
  260. public var testData:Object;
  261. public var testWin:Array;
  262. public function parseSpinResult(data: Object):void
  263. {
  264. this.testData = data;
  265. testWin = (data.c as String).split("|") ;
  266. }
  267.  
  268. public function countMaxBet(money:Number):Object
  269. {
  270. var obj:Object = { lines: 1, bet: 0};
  271. for(obj.lines = 1; obj.lines < _lines.length; obj.lines++)
  272. {
  273. if(money < (obj.lines + 1) * _bets[0])
  274. {
  275. return obj;
  276. }
  277. }
  278. for(var bet:int = 1 ; bet < _bets.length; bet++)
  279. {
  280. if(money < obj.lines * _bets[bet])
  281. {
  282. return obj;
  283. }
  284. obj.bet = bet;
  285. }
  286. return obj;
  287. }
  288.  
  289. private function convertReelsConfig(reelsConfig:Array):void
  290. {
  291. for each(var arr:Array in reelsConfig)
  292. {
  293. for (var i:int = 0; i < arr.length; i++)
  294. {
  295. switch (arr[i])
  296. {
  297. case "f1_s":
  298. arr[i] = 1;
  299. break;
  300. case "f2_s":
  301. arr[i] = 2;
  302. break;
  303. case "f3_s":
  304. arr[i] = 3;
  305. break;
  306. case "f4_s":
  307. arr[i] = 4;
  308. break;
  309. case "f5_s":
  310. arr[i] = 5;
  311. break;
  312. case "f6_s":
  313. arr[i] = 6;
  314. break;
  315. case "f7_s":
  316. arr[i] = 7;
  317. break;
  318. case "f8_s":
  319. arr[i] = 8;
  320. break;
  321. case "f9_s":
  322. arr[i] = 9;
  323. break;
  324. case "sc_s":
  325. arr[i] = 997;
  326. break;
  327. case "wi_s":
  328. arr[i] = 999;
  329. break;
  330. case "bn_s":
  331. arr[i] = 998;
  332. break;
  333. }
  334. }
  335. }
  336. }
  337. }
  338. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement