Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.playcus.slots.game.model
- {
- import com.playcus.slots.core.managers.EventsManager;
- public class GameModel
- {
- public const slotsShowedOnReel:int = 3;
- private var _currentLines:int;
- public function get currentLines():int { return _currentLines; };
- public function set currentLines(value:int):void {
- _currentLines = value;
- EventsManager.instance.dispatchEventWith(EventsManager.USER_LINES_UPDATE);
- };
- private var _betPos:int;
- public function get betPos():int { return _betPos;}
- public function set betPos(value:int):void
- {
- if(value < 0 || value >= _bets.length)
- {
- return;
- }
- _betPos = value;
- EventsManager.instance.dispatchEventWith(EventsManager.USER_BET_UPDATE);
- }
- public function get currentBet():Number { return _bets[_betPos]; }
- public function get totalCurBet():Number { return Math.round(10 * currentBet * _currentLines)/10; }
- public function get totalMaxBet():Number { return maxBet * _lines.length; }
- private var _lastWin:Number = 0;
- public function get lastWin():Number { return _lastWin; }
- public function set lastWin(value: Number):void {
- _lastWin = value;
- EventsManager.instance.dispatchEventWith(EventsManager.WIN_UPDATE);
- }
- private var _timeToStopAndStart:Number;
- public function get timeToStopAndStart():Number { return _timeToStopAndStart};
- private var _moveSymbolsForStop:int;
- public function get moveSymbolsForStop():int{ return _moveSymbolsForStop; }
- private var _moveSpeed:int;
- public function get moveSpeed():int { return _moveSpeed};
- private var _autoSpeed:int;
- public function get autoSpeed():int { return _autoSpeed};
- private var _autoTime:int;
- public function get autoTime():int { return _autoTime};
- private var _autoTimeOfShowAllWinLines:int;
- public function get autoTimeOfShowAllWinLines():int { return _autoTimeOfShowAllWinLines};
- private var _timeOfShowAllWinLines:int;
- public function get timeOfShowAllWinLines():int { return _timeOfShowAllWinLines};
- private var _timeOfShowWinLine:int;
- public function get timeOfShowWinLine():int { return _timeOfShowWinLine};
- public function get reelsCount():int { return _reelsConfig.length};
- public function get maxBet():Number { return _bets[_bets.length - 1]};
- private var _bets:Array;
- public function get bets():Array { return _bets};
- private var _isAutoGame:Boolean;
- public function get isAutoGame():Boolean { return _isAutoGame;}
- public function set isAutoGame(value:Boolean):void
- {
- _isAutoGame = value;
- if(!value)
- {
- autoSpinCounter = 0;
- }
- }
- private var _autoSpinCounter:int;
- public function get autoSpinCounter():int { return _autoSpinCounter};
- public function set autoSpinCounter(value: int):void
- {
- _autoSpinCounter = value;
- if(value <= 0)
- {
- _isAutoGame = false;
- }
- EventsManager.instance.dispatchEventWith(EventsManager.AUTOGAME_COUNTER_UPDATE);
- }
- private var _isFreeGame:Boolean;
- public function get isFreeGame():Boolean { return _isFreeGame;}
- public function set isFreeGame(value:Boolean):void
- {
- _isFreeGame = value;
- if(!value)
- {
- _freeSpinCounter = 0;
- }
- EventsManager.instance.dispatchEventWith(EventsManager.FREEGAME_MODE_UPDATE);
- }
- private var _freeSpinCounter:int;
- public function get freeSpinCounter():int { return _freeSpinCounter};
- public function set freeSpinCounter(value: int):void
- {
- _freeSpinCounter = value;
- if(value <= 0)
- {
- isFreeGame = false;
- }
- EventsManager.instance.dispatchEventWith(EventsManager.FREEGAME_COUNTER_UPDATE);
- }
- public function get isGameWithoutUser():Boolean
- {
- return _isAutoGame || _isFreeGame;
- }
- private var _results:Vector.<Array>;
- private var _currentSpinResult_1_line:Array;
- public function get currentSpinResult_1_line():Array
- {
- return _currentSpinResult_1_line;
- }
- private var _rotationTime:Number;
- public function get rotationTime():Number { return _rotationTime};
- private var _simpleComb:Object;
- public function get simpleComb():Object
- {
- return _simpleComb;
- }
- private var _lines:Array;
- public function get lines():Array
- {
- return _lines;
- }
- private var _reelsConfig:Array;
- public function get reelsConfig():Array
- {
- return _isFreeGame ? _freeReelsConfig : _reelsConfig;
- }
- private var _freeReelsConfig:Array;
- public function get freeReelsConfig():Array
- {
- return _freeReelsConfig;
- }
- private var _bonusGameConfig:Object;
- public function get bonusGameConfig():Object { return _bonusGameConfig; }
- private var _bonusWin:int = 0;
- public function get bonusWin():int { return _bonusWin; }
- public function set bonusWin(value: int):void { _bonusWin = value; }
- public function get bonusTotalWin():Number { return Math.round(10 * _bonusWin * currentBet)/10; }
- private var _gi:String;
- public function get gi():String
- {
- return _gi;
- }
- public function GameModel(gameSettings: Object, gameConfig:Object)
- {
- _gi = gameSettings ? gameSettings.gi : null;
- _timeToStopAndStart = gameConfig.startStopTime; // время старта и остановки анимации вращения (defaul 0.5 - полсекунды)
- _moveSpeed = gameConfig.speed; // скорость вращения барабана в пикселях (defaul 40 пикселей)
- _rotationTime = gameConfig.spinTime;
- _bets = gameConfig.bets; // массив возможных ставок по возрастанию
- _betPos = 0;
- _autoSpeed = gameConfig.autoSpeed; // скорость ващения барабана в пикселях в автоигре (defaul 50 пикселей)
- _autoTime = gameConfig.autoTime; // задержка между окончанием и стартом спина в автоигре
- _autoTimeOfShowAllWinLines = gameConfig.autoTimeOfShowAllWinLines; // время на показ всех выигрышных линий и символо в автоигре
- _timeOfShowWinLine = gameConfig.timeOfShowWinLine; // время отоброжения одной из выигрышных линий в стандартном спине
- _timeOfShowAllWinLines = gameConfig.timeOfShowAllWinLines; // время отоброжения всех выигрышных линий и символов в стандартном спине, перед стартом поочередной анимации линий
- _moveSymbolsForStop = gameConfig.moveSymbolsForStop; // кол-во слотов, которые отоброзятся перед остановкой следующего барабана,
- _results = new <Array>[ [2,14,3,2,0]/*,
- [0,0,3,6,5],
- [1,1,1,1,1],
- [1,2,3,1,2],
- [0,0,0,0,0],
- [5,5,5,5,5],
- [6,6,6,6,6]*/
- ];
- _simpleComb = gameConfig.combination; // массив комбинаций для символов { "1"(тип символа) : [0, 0, 1(награда за три символа в линии, при расчете выиграша умножается на текущую ставку), 2(награда за четыре символа в линии, умножается на текущую ставку), 4].... }
- _lines = gameConfig.lines; // массив выигрышных линий [[5,6,7,8,9], [1,2,3,4,5] ....] (в слоте из 5 барабанов айди первого символа 1, последнего 15)
- _reelsConfig = gameConfig.reels; // массив лент барабанов [[1,2,3,4,5,6,7,8,9], [1,2..... ] длина массива равна кол-ву барабанов, длина элемента(массива) в массиве равна кол-ву позиций в ленте. в ленте указываются айдишники символов
- _freeReelsConfig = gameConfig.freereels ? gameConfig.freereels : gameConfig.reels;
- convertReelsConfig(_reelsConfig);
- convertReelsConfig(_freeReelsConfig);
- _currentLines = _lines.length;
- }
- public function nextSpinResult():void
- {
- _currentSpinResult_1_line = _results.shift();
- if(!_currentSpinResult_1_line)
- {
- _currentSpinResult_1_line = [];
- for (var i:int = 0; i < reelsCount; i++)
- _currentSpinResult_1_line.push(Math.floor(Math.random() * (reelsConfig[i] as Array).length));
- }
- }
- public function get spinResultSymbolsIds():Vector.<int>
- {
- var arr:Vector.<int> = new Vector.<int>();
- var position:int;
- for (var i:int = 0; i < slotsShowedOnReel; i++)
- {
- for (var j:int = 0; j < reelsCount; j++)
- {
- if(i == 0)
- {
- position = nextPos(currentSpinResult_1_line[j], reelsConfig[j].length);
- }else if(i == 1)
- {
- position = currentSpinResult_1_line[j];
- }else if(i == 2)
- {
- position = prevPos(currentSpinResult_1_line[j], reelsConfig[j].length);
- }
- arr.push(reelsConfig[j][position]); // push id of symbol(slot)
- }
- }
- return arr;
- }
- private function prevPos(curPos:int, maxPos:int):int
- {
- if(curPos == 0) return maxPos - 1;
- return curPos - 1;
- }
- private function nextPos(curPos:int, maxPos:int):int
- {
- if(curPos == maxPos - 1) return 0;
- return curPos + 1;
- }
- public var testData:Object;
- public var testWin:Array;
- public function parseSpinResult(data: Object):void
- {
- this.testData = data;
- testWin = (data.c as String).split("|") ;
- }
- public function countMaxBet(money:Number):Object
- {
- var obj:Object = { lines: 1, bet: 0};
- for(obj.lines = 1; obj.lines < _lines.length; obj.lines++)
- {
- if(money < (obj.lines + 1) * _bets[0])
- {
- return obj;
- }
- }
- for(var bet:int = 1 ; bet < _bets.length; bet++)
- {
- if(money < obj.lines * _bets[bet])
- {
- return obj;
- }
- obj.bet = bet;
- }
- return obj;
- }
- private function convertReelsConfig(reelsConfig:Array):void
- {
- for each(var arr:Array in reelsConfig)
- {
- for (var i:int = 0; i < arr.length; i++)
- {
- switch (arr[i])
- {
- case "f1_s":
- arr[i] = 1;
- break;
- case "f2_s":
- arr[i] = 2;
- break;
- case "f3_s":
- arr[i] = 3;
- break;
- case "f4_s":
- arr[i] = 4;
- break;
- case "f5_s":
- arr[i] = 5;
- break;
- case "f6_s":
- arr[i] = 6;
- break;
- case "f7_s":
- arr[i] = 7;
- break;
- case "f8_s":
- arr[i] = 8;
- break;
- case "f9_s":
- arr[i] = 9;
- break;
- case "sc_s":
- arr[i] = 997;
- break;
- case "wi_s":
- arr[i] = 999;
- break;
- case "bn_s":
- arr[i] = 998;
- break;
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement