[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#791518: marked as done (kbreakout: Restore debugging/cheat codes)



Your message dated Tue, 10 Nov 2015 05:28:19 +0100
with message-id <20151110042819.GA22226@amazing>
and subject line kbreakout: Restore debugging/cheat codes
has caused the Debian Bug report #791518,
regarding kbreakout: Restore debugging/cheat codes
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
791518: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=791518
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: kbreakout
Version: 4:4.13.1-1
Severity: normal
Tags: patch upstream

Dear Maintainer,

The following debugging/cheat codes were available when running
kbreakout with the KDE_DEBUG environment variable under Debian Wheezy
(KBreakout 4.8.4), but are not available anymore after upgrading to
Debian Jessie (KBreakout 4.13.1):

* S = Skip level
* L = Add life

To fix this, I created attached fix specifically for kbreakout-4.13.1,
the version included in Debian Jessie. I tested that it builds
successfully and works as expected.

I already submitted a port of this patch for the development version at
KDE upstream, which was recently accepted. [1] [2]

Thanks,
Peter

[1] https://git.reviewboard.kde.org/r/123950/
[2]
http://quickgit.kde.org/?p=kbreakout.git&a=commit&h=37588239823a58f9e58446fb8ae3ce7db898abdd



-- System Information:
Debian Release: 8.1
  APT prefers stable
  APT policy: (700, 'stable'), (500, 'stable-updates'), (500, 'proposed-updates'), (90, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 3.16.0-4-686-pae (SMP w/1 CPU core)
Locale: LANG=en_US.UTF8, LC_CTYPE=en_US.UTF8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages kbreakout depends on:
ii  kde-games-core-declarative  4:4.14.2-1
ii  kde-runtime                 4:4.14.2-2
ii  libc6                       2.19-18
ii  libkdecore5                 4:4.14.2-5
ii  libkdegames6abi1            4:4.14.2-1
ii  libkdeui5                   4:4.14.2-5
ii  libqt4-declarative          4:4.8.6+git64-g5dc8b2b+dfsg-3+deb8u1
ii  libqt4-xml                  4:4.8.6+git64-g5dc8b2b+dfsg-3+deb8u1
ii  libqtcore4                  4:4.8.6+git64-g5dc8b2b+dfsg-3+deb8u1
ii  libqtgui4                   4:4.8.6+git64-g5dc8b2b+dfsg-3+deb8u1
ii  libstdc++6                  4.9.2-10

Versions of packages kbreakout recommends:
ii  khelpcenter4  4:4.14.2-2

kbreakout suggests no packages.

-- no debconf information
Author: Peter Nowee <peter.nowee@gmail.com>
Date:   Wed Jul 05 16:47:47 2015 +0200

[kbreakout] Restore debugging/cheat codes

This changeset restores the debugging/cheat codes that were left out of
the QtQuick port (version 4.9.90, KDE commits 5043da7 and f8f3491):

* S = Skip level
* L = Add life

These cheat codes are invaluable when designing and testing levels, as
my son likes to do.

Like before, all this will only be available when the KDE_DEBUG
environment variable is true, for example:

KDE_DEBUG=1 kbreakout

The key shortcuts (default: "S", "L") can now also be configured through
the menu (provided KDE_DEBUG is true).

Note that this patch was specifically created for KBreakout 4.13.1.
An updated patch for the current development version was commited
upstream with KDE commit 3758823.

diff --git a/src/canvaswidget.cpp b/src/canvaswidget.cpp
index 42bada1..23bd872 100644
--- a/src/canvaswidget.cpp
+++ b/src/canvaswidget.cpp
@@ -96,6 +96,16 @@ void CanvasWidget::fire()
     QMetaObject::invokeMethod(rootObject(), "fire");
 }
 
+void CanvasWidget::cheatSkipLevel()
+{
+    QMetaObject::invokeMethod(rootObject(), "cheatSkipLevel");
+}
+
+void CanvasWidget::cheatAddLife()
+{
+    QMetaObject::invokeMethod(rootObject(), "cheatAddLife");
+}
+
 void CanvasWidget::setGamePaused(bool paused)
 {
     QMetaObject::invokeMethod(rootObject(), "setGamePaused",
diff --git a/src/canvaswidget.h b/src/canvaswidget.h
index 8145124..7453d95 100644
--- a/src/canvaswidget.h
+++ b/src/canvaswidget.h
@@ -38,6 +38,8 @@ public slots:
     void fire();
     void setGamePaused(bool paused);
     void updateFireShortcut();
+    void cheatSkipLevel();
+    void cheatAddLife();
 
 private slots:
     void newGame();
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 1263477..c2de58f 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -59,6 +59,8 @@ MainWindow::MainWindow(QWidget *parent)
 {
     gameEngine = new GameEngine(this);
     
+    m_cheatsEnabled = !qgetenv("KDE_DEBUG").isEmpty();
+
     connect(canvasWidget, SIGNAL(focusLost()),
             this, SLOT(pauseGame()));
     
@@ -134,6 +136,22 @@ void MainWindow::setupActions()
     connect(fireAction, SIGNAL(changed()), canvasWidget, SLOT(updateFireShortcut()));
     actionCollection()->addAction( QLatin1String( "fire" ), fireAction);
 
+    if (m_cheatsEnabled) {
+        KAction *cheatSkipLevelAction = new KAction(this);
+        cheatSkipLevelAction->setText(i18n("Skip level"));
+        cheatSkipLevelAction->setShortcut(Qt::Key_S);
+        cheatSkipLevelAction->setIcon(KIcon( QLatin1String( "kbreakout" )));
+        connect(cheatSkipLevelAction, SIGNAL(triggered()), this, SLOT(cheatSkipLevel()));
+        actionCollection()->addAction( QLatin1String( "cheatSkipLevel" ), cheatSkipLevelAction);
+
+        KAction *cheatAddLifeAction = new KAction(this);
+        cheatAddLifeAction->setText(i18n("Add life"));
+        cheatAddLifeAction->setShortcut(Qt::Key_L);
+        cheatAddLifeAction->setIcon(KIcon( QLatin1String( "kbreakout" )));
+        connect(cheatAddLifeAction, SIGNAL(triggered()), this, SLOT(cheatAddLife()));
+        actionCollection()->addAction( QLatin1String( "cheatAddLife" ), cheatAddLifeAction);
+    }
+
     pauseAction = KStandardGameAction::pause(this,
               SLOT(setGamePaused(bool)), actionCollection());
     // set custom keys
@@ -242,6 +260,25 @@ void MainWindow::fire()
     }
 }
 
+
+void MainWindow::cheatSkipLevel()
+{
+    if (pauseAction->isChecked()) {
+        pauseAction->activate(QAction::Trigger);
+    } else {
+        canvasWidget->cheatSkipLevel();
+    }
+}
+
+void MainWindow::cheatAddLife()
+{
+    if (pauseAction->isChecked()) {
+        pauseAction->activate(QAction::Trigger);
+    } else {
+        canvasWidget->cheatAddLife();
+    }
+}
+
 void MainWindow::viewFullScreen(bool fullScreen)
 {
     KToggleFullScreenAction::setFullScreen(this, fullScreen);
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 1bcd796..c4a5a79 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -39,6 +39,8 @@ private slots:
     void showHighscores();
     void startNewGame();
     void fire();
+    void cheatSkipLevel();
+    void cheatAddLife();
     // calls the action
     void pauseGame();
     // called by the action
@@ -47,6 +49,8 @@ private slots:
     void handleMousePressed();
     
 private:
+    bool m_cheatsEnabled;
+
     void setupActions();
 
     KToggleAction *pauseAction;
diff --git a/src/qml/logic.js b/src/qml/logic.js
index c43d0d4..5ca51e1 100644
--- a/src/qml/logic.js
+++ b/src/qml/logic.js
@@ -326,6 +326,12 @@ function fireBall() {
     randomCounter = 0;
 }
 
+function addLife() {
+	if (lives < Globals.MAXIMUM_LIVES) {
+		lives++;
+	}
+}
+
 function setGamePaused(paused) {
     if (gameOver || gameWon || canvas.paused==paused) return;
     canvas.paused = paused;
diff --git a/src/qml/main.qml b/src/qml/main.qml
index c8a8dc6..48d0415 100644
--- a/src/qml/main.qml
+++ b/src/qml/main.qml
@@ -230,6 +230,14 @@ Item {
         Logic.fireBall();
     }
 
+    function cheatAddLife() {
+        Logic.addLife();
+    }
+
+    function cheatSkipLevel() {
+        Logic.loadNextLevel();
+    }
+
     Timer {
         id: burnBricksTimer
         property variant target

--- End Message ---
--- Begin Message ---
Version: 4:15.08.0-1

Attachment: signature.asc
Description: Digital signature


--- End Message ---

Reply to: