CLevels.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. var CLevels = (function(){
  2. var _iUpMargin = CARD_HEIGHT/2 + CANVAS_HEIGHT*0.2;
  3. var _iEffectiveCentreX = CANVAS_WIDTH/2;
  4. var _iEffectiveCentreY = (CANVAS_HEIGHT - _iUpMargin)/2 + _iUpMargin;
  5. var _iEffectiveCanvasHeight = CANVAS_HEIGHT - _iUpMargin;
  6. var _iCardPadding = 30;
  7. // send level data
  8. var getLevelData = function(iLevel){
  9. var _iCardsNum = s_aCardsPerLevel[iLevel - 1];
  10. if(_iCardsNum > MAX_CARDS){
  11. _iCardsNum = MAX_CARDS;
  12. }
  13. var _oLevel = {
  14. cardZoomFactor : 1,
  15. cardsNum : _iCardsNum,
  16. cardsPos : [],
  17. timeAllotted : s_aSecsPerLevel[iLevel - 1] * 1000
  18. }
  19. for (var scaling = 1; scaling >= 0.1; scaling -= 0.01) {
  20. for (var rows = 2; rows <= 6; rows += 1) {
  21. var _iCardsPerRow = _iCardsNum/rows;
  22. if (_iCardsPerRow*(CARD_WIDTH*scaling + _iCardPadding*scaling) <= CANVAS_WIDTH &&
  23. (rows)*(CARD_HEIGHT*scaling+_iCardPadding*scaling) <= _iEffectiveCanvasHeight &&
  24. _iCardsNum%rows === 0) {
  25. var _iXShift = _iEffectiveCentreX - (_iCardsPerRow - 1)*(CARD_WIDTH*scaling+_iCardPadding*scaling)*0.5;
  26. var _iYShift = _iEffectiveCentreY - (_iUpMargin + ((CARD_HEIGHT*scaling+_iCardPadding*scaling)*(rows-1) + _iUpMargin)*0.5);
  27. for (var i = 0; i < rows; i++) {
  28. for (var j = 0; j < _iCardsPerRow; j++) {
  29. _oLevel.cardsPos[i*_iCardsPerRow + j] = [_iXShift+(CARD_WIDTH*scaling+_iCardPadding*scaling)*j,
  30. _iYShift + _iUpMargin+(CARD_HEIGHT*scaling+_iCardPadding*scaling)*i];
  31. };
  32. };
  33. _oLevel.cardZoomFactor = scaling;
  34. return _oLevel;
  35. };
  36. };
  37. };
  38. };
  39. return getLevelData;
  40. })();