Warning, /games/kbreakout/src/qml/Bar.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2012 Viranch Mehta <viranch.mehta@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 import QtQuick 2.3
0008 import org.kde.games.core 0.1 as KgCore
0009 import "globals.js" as Globals
0010 
0011 CanvasItem {
0012     id: bar
0013     spriteKey: "PlainBar"
0014 
0015     property real barWidth: Globals.DEFAULT_BAR_WIDTH
0016     width: m_scale * barWidth
0017     height: m_scale * Globals.BRICK_HEIGHT
0018 
0019     Behavior on width { NumberAnimation { duration: 50 } }
0020 
0021     property int direction: 0
0022 
0023     property string type
0024     onTypeChanged: spriteKey = type;
0025 
0026     // for preserving position relative
0027     // to bgOverlay when canvas is resized
0028     property real posX
0029     x: m_scale * posX
0030 
0031     function stopMoving() {
0032         moveTimer.stop();
0033     }
0034 
0035     Timer {
0036         id: moveTimer
0037         interval: Globals.DEFAULT_UPDATE_INTERVAL
0038         repeat: true
0039         running: direction!=0 && !paused
0040         onTriggered: moveBy(bar.direction*Globals.BAR_MOVEMENT);
0041     }
0042 
0043     function moveTo(newPos) {
0044         if (newPos < 0) {
0045             newPos = 0;
0046         } else if (newPos*m_scale + width > bgOverlay.width) {
0047             newPos = (bgOverlay.width - bar.width)/m_scale;
0048         }
0049 
0050         posX = newPos;
0051     }
0052 
0053     function moveBy(dx) {
0054         moveTo(posX + dx);
0055     }
0056 
0057     function reset() {
0058         var newWidth = Globals.DEFAULT_BAR_WIDTH;
0059         moveBy( (barWidth-newWidth)/2 );
0060         barWidth = newWidth;
0061         type = "PlainBar";
0062     }
0063 
0064     function enlarge() {
0065         var newWidth = Math.round(barWidth * Globals.RESIZE_BAR_RATIO);
0066         if (newWidth > Globals.MAX_BAR_WIDTH) {
0067             newWidth = Globals.MAX_BAR_WIDTH;
0068         }
0069         moveBy( (barWidth-newWidth)/2 );
0070         barWidth = newWidth;
0071     }
0072 
0073     function shrink() {
0074         var newWidth = Math.round(barWidth / Globals.RESIZE_BAR_RATIO);
0075         if (newWidth < Globals.MIN_BAR_WIDTH) {
0076             newWidth = Globals.MIN_BAR_WIDTH;
0077         }
0078         moveBy( (barWidth-newWidth)/2 );
0079         barWidth = newWidth;
0080     }
0081 }