1 /****************************************************************************
2 **
3 ** Copyright (C) 2015 The Qt Company Ltd.
4 ** Contact: http://www.qt.io/licensing/
5 **
6 ** This file is part of the examples of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:BSD$
9 ** You may use this file under the terms of the BSD license as follows:
10 **
11 ** "Redistribution and use in source and binary forms, with or without
12 ** modification, are permitted provided that the following conditions are
13 ** met:
14 ** * Redistributions of source code must retain the above copyright
15 ** notice, this list of conditions and the following disclaimer.
16 ** * Redistributions in binary form must reproduce the above copyright
17 ** notice, this list of conditions and the following disclaimer in
18 ** the documentation and/or other materials provided with the
19 ** distribution.
20 ** * Neither the name of The Qt Company Ltd nor the names of its
21 ** contributors may be used to endorse or promote products derived
22 ** from this software without specific prior written permission.
23 **
24 **
25 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
36 **
37 ** $QT_END_LICENSE$
38 **
39 ****************************************************************************/
41 import QtQuick 2.0
42 import "../logic.js" as Logic
43 import ".."
45 TowerBase {
46 id: container
47 hp: 2
48 range: 6
49 damage: 0 // By projectile
50 rof: 40
51 income: 0
52 property var targetMob
53 property real realDamage: 1
54 function fire() {
55 proj.x = 32 - proj.width / 2
56 proj.y = 0
57 targetMob = Logic.gameState.mobs[col][0]
58 projAnim.to = targetMob.y - container.y -10
59 projAnim.start()
60 shootSound.play()
61 sprite.jumpTo("shoot")
62 }
64 Image {
65 id: proj
66 y: 1000
67 SequentialAnimation on y {
68 id: projAnim
69 running: false
70 property real to: 1000
71 SmoothedAnimation {
72 to: projAnim.to
73 velocity: 400
74 }
75 ScriptAction {
76 script: {
77 if (targetMob && targetMob.hit) {
78 targetMob.hit(realDamage)
79 targetMob.inked()
80 projSound.play()
81 }
82 }
83 }
84 PropertyAction {
85 value: 1000;
86 }
87 }
88 source: "../gfx/projectile.png"
89 }
91 SoundEffect {
92 id: shootSound
93 source: "../audio/shooter-action.wav"
94 }
95 SoundEffect {
96 id: projSound
97 source: "../audio/projectile-action.wav"
98 }
100 SpriteSequence {
101 id: sprite
102 width: 64
103 height: 64
104 interpolate: false
105 goalSprite: ""
107 Sprite {
108 name: "idle"
109 source: "../gfx/shooter-idle.png"
110 frameCount: 4
111 frameDuration: 250
112 }
114 Sprite {
115 name: "shoot"
116 source: "../gfx/shooter-action.png"
117 frameCount: 5
118 frameDuration: 90
119 to: { "idle" : 1 }
120 }
122 SequentialAnimation on x {
123 loops: Animation.Infinite
124 NumberAnimation { from: x; to: x - 4; duration: 900; easing.type: Easing.InOutQuad }
125 NumberAnimation { from: x - 4; to: x; duration: 900; easing.type: Easing.InOutQuad }
126 }
127 }
128 }