Squaby Demo
import QtQuick 2.0
import QtMultimedia 6.0
import Felgo 4.0
import "../particles"
TowerBase {
id: taser
entityType: "taser"
property real taserAreaDamagePerSecond: level.balancingSettings.taser.taserAreaDamagePerSecond
property bool running: false
shootDelayInMilliSeconds: level.balancingSettings.taser.shootDelayInMilliSeconds
cost: level.balancingSettings.taser.cost
saleRevenue: level.balancingSettings.taser.saleRevenue
upgradeLevels: level.balancingSettings.taser.upgradeLevels
__currentUpgradeLevels: { "range": 0, "damagePerSecond": 0 }
onEntityDestroyed: {
shootTimer.running = false;
}
TaserSprite {
id: sprite
}
GameSoundEffect {
id: shootEffect
source: Qt.resolvedUrl("../../assets/snd/taserfire.wav")
loops: SoundEffect.Infinite
}
Timer {
id: shootTimer
interval: 100
repeat: true
triggeredOnStart: true
onTriggered: {
shoot();
}
onRunningChanged: {
console.debug("taser: running changed to", running)
if(running) {
__lastShoot = new Date()
}
}
}
onAimingAtTargetChanged: {
console.debug("aimingAtTarget of taser changed to:", aimingAtTarget);
if(aimingAtTarget && !shootTimer.running) {
shootTimer.running = true;
shootEffect.play();
running = true
}
}
onTargetRemoved: {
shootEffect.stop();
running = false
shootTimer.running = false;
}
onTowerUpgradedWithCustomUpgrade: {
if(upgradeType === "damagePerSecond") {
taserAreaDamagePerSecond = upgradeData.value;
}
}
onTowerUpgraded: {
}
property date __lastShoot
function shoot() {
if(!targetEntity) {
shootTimer.running = false;
return;
}
var now = new Date;
var dt = now-__lastShoot;
__lastShoot = now;
var damage = taserAreaDamagePerSecond*dt*0.001;
targetEntity.hitByValue(entityId, entityType, damage);