You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

82 lines
2.4 KiB

Array.prototype.random = function () {
return this[Math.floor((Math.random()*this.length))];
}
const FishApp = {
data() {
return {
force: 0,
pull: false,
pullRate: 2,
dropRate: 3,
intervalID: null,
fishMovementIntervalID: null,
fishy: null,
fishies: [
{
name: 'Freddy the fishy',
strength: 3,
quirkyness: 10,
points: 10,
position: 0,
sprite: './assets/fishTile_074.png'
}
]
}
},
watch: {
pull() {
let vue = this;
window.clearInterval(vue.intervalID);
if (vue.pull) {
vue.intervalID = setInterval(function () {
if (vue.force < 125) {
vue.force = Number(vue.force) + vue.pullRate;
}
}, 50);
} else {
vue.intervalID = setInterval(function () {
if (vue.force >= 0.0) {
vue.force = Number(vue.force) - vue.dropRate;
}
if (vue.force < 0.7) {
vue.force = 0;
}
}, 50);
}
}
},
methods: {
pullRod() {
this.force = Number(this.force) + 0.5;
},
deployFish() {
this.fishy = this.fishies.random();
this.startFishLifecycle();
},
startFishLifecycle() {
let vue = this;
this.fishy.position = 0;
this.fishMovementIntervalID = setInterval(() => {
let up = Math.floor(Math.random() * 101) <= 55;
if (up) {
if (vue.fishy.position < 250) {
vue.fishy.position += vue.fishy.quirkyness;
} else {
vue.fishy.position -= vue.fishy.quirkyness;
}
} else {
if (vue.fishy.position >= vue.fishy.quirkyness) {
vue.fishy.position = Number(vue.fishy.position) - vue.fishy.quirkyness;
}
}
}, 100);
}
}
};
Vue.createApp(FishApp).mount('#root');