User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 116
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 111
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 106
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 109
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'self.fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 106
User prompt
Migrate to the latest version of LK
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 106
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'self.fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 106
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'attachAsset')' in or related to this line: 'var fishGraphics = self.attachAsset('zebraDanio', {' Line Number: 106
User prompt
Migrate to the latest version of LK
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'var fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 25
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'self.fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 25
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'self.fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 25
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'self.fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 52
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'var fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 169
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'self.fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 169
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'var fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 169
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'var fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 168
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'var fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 168
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'createAsset')' in this line: 'var fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);' Line Number: 168
User prompt
Improve the fluidity
User prompt
Make décoration 600 pixel up
User prompt
Move the décoration in the aquarium
User prompt
Fix Bug: 'Uncaught ReferenceError: aquarium is not defined' in this line: 'var waterBounds = aquarium.getWaterBounds();' Line Number: 1351
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'getWaterBounds')' in this line: 'var waterBounds = self.aquarium.getWaterBounds();' Line Number: 1255
===================================================================
--- original.js
+++ change.js
@@ -1,7 +1,32 @@
/****
* Classes
-****/
+****/
+var Aquarium = Container.expand(function () {
+ var self = Container.call(this);
+ this.getWaterBounds = function () {
+ var waterGraphics = LK.getAsset('water', {});
+ return {
+ left: (2048 - waterGraphics.width) / 2,
+ right: (2048 + waterGraphics.width) / 2,
+ top: (2732 - waterGraphics.height) / 2 - 150,
+ bottom: (2732 + waterGraphics.height) / 2 - 150
+ };
+ };
+ var aquariumGraphics = self.attachAsset('aquarium', {});
+ aquariumGraphics.width = 2048 * 1.3;
+ aquariumGraphics.height = 2732 * 1.3;
+ aquariumGraphics.x = (2048 - aquariumGraphics.width) / 2;
+ aquariumGraphics.y = (2732 - aquariumGraphics.height) / 2;
+ self.addChild(aquariumGraphics);
+ var waterGraphics = self.attachAsset('water', {});
+ waterGraphics.width = 2048 / 3 * 2 * 1.08;
+ waterGraphics.height = 2732 / 3 * 1.26;
+ waterGraphics.x = (2048 - waterGraphics.width) / 2;
+ waterGraphics.y = (2732 - waterGraphics.height) / 2 - 150;
+ waterGraphics.alpha = 0.8;
+ self.addChild(waterGraphics);
+});
var Fish = Container.expand(function () {
var self = Container.call(this);
self.avoidObstacles = function (obstacles) {};
self.isPathBlocked = function (newX, newY, obstacles) {
@@ -10,9 +35,9 @@
self.getNearbyObstacles = function () {
return [];
};
this.getWaterBounds = function () {
- var waterGraphics = LK.getAsset('water', 'Water Graphics', 0, 0);
+ var waterGraphics = LK.getAsset('water', {});
return {
left: (2048 - waterGraphics.width) / 2,
right: (2048 + waterGraphics.width) / 2,
top: (2732 - waterGraphics.height) / 2 - 150,
@@ -21,12 +46,15 @@
};
});
var ZebraDanio = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('zebraDanio', 'Zebra Danio Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('zebraDanio', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
self.speed = Math.random() * 0.2 + 0.4;
- self.move = function () {
+ self._move_migrated = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
self.directionChangeTime = LK.ticks;
self.directionChangeInterval = Math.random() * 90 + 45;
self.targetRotation = Math.random() * Math.PI * 2;
@@ -50,108 +78,47 @@
fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var CelestialPearlDanio = Fish.expand(function () {
+var YellowTang = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('celestialPearlDanio', 'Celestial Pearl Danio Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('yellowTang', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.35;
- self.move = function () {
- if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
- self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 80 + 40;
- self.targetRotation = Math.random() * Math.PI * 2;
- }
- var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
- if (progress < 1) {
- self.rotation += (self.targetRotation - self.rotation) * progress;
- } else {
- self.rotation = self.targetRotation;
- }
- self.x += Math.cos(self.rotation) * self.speed;
- self.y += Math.sin(self.rotation) * self.speed;
- var waterBounds = self.getWaterBounds();
- if (self.x < waterBounds.left || self.x > waterBounds.right) {
- self.rotation = Math.PI - self.rotation;
- }
- if (self.y < waterBounds.top || self.y > waterBounds.bottom) {
- self.rotation = -self.rotation;
- }
- self.rotation = self.rotation % (Math.PI * 2);
- fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
- fishGraphics.rotation = self.rotation;
- };
+ self.speed = Math.random() * 0.2 + 0.5;
+ self._move_migrated = function () {};
});
var Wrasses = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('wrasses', 'Wrasses Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('wrasses', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
self.speed = Math.random() * 0.2 + 0.42;
- self.move = function () {};
+ self._move_migrated = function () {};
});
-var Parrotfish = Fish.expand(function () {
- var self = Fish.call(this);
- var fishGraphics = self.createAsset('parrotfish', 'Parrotfish Graphics', .5, .5);
- fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.50;
- self.move = function () {};
-});
-var Dartfish = Fish.expand(function () {
- var self = Fish.call(this);
- var fishGraphics = self.createAsset('dartfish', 'Dartfish Graphics', .5, .5);
- fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.45;
- self.move = function () {};
-});
-var MoorishIdol = Fish.expand(function () {
- var self = Fish.call(this);
- var fishGraphics = self.createAsset('moorishidol', 'Moorish Idol Graphics', .5, .5);
- fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.43;
- self.move = function () {};
-});
var Tangfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('tangfish', 'Tangfish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('tangfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
self.speed = Math.random() * 0.2 + 0.47;
- self.move = function () {};
+ self._move_migrated = function () {};
});
-var Bannerfish = Fish.expand(function () {
- var self = Fish.call(this);
- var fishGraphics = self.createAsset('bannerfish', 'Bannerfish Graphics', .5, .5);
- fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.46;
- self.move = function () {};
-});
-var Butterflyfish = Fish.expand(function () {
- var self = Fish.call(this);
- var fishGraphics = self.createAsset('butterflyfish', 'Butterflyfish Graphics', .5, .5);
- fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.45;
- self.move = function () {};
-});
-var Mandarinfish = Fish.expand(function () {
- var self = Fish.call(this);
- var fishGraphics = self.createAsset('mandarinfish', 'Mandarinfish Graphics', .5, .5);
- fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.4;
- self.move = function () {};
-});
-var Lionfish = Fish.expand(function () {
- var self = Fish.call(this);
- var fishGraphics = self.createAsset('lionfish', 'Lionfish Graphics', .5, .5);
- fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.5;
- self.move = function () {};
-});
var Surgeonfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('surgeonfish', 'Surgeonfish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('surgeonfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
self.speed = (Math.random() * 0.2 + 0.5) * 2;
- self.move = function () {
+ self._move_migrated = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
self.directionChangeTime = LK.ticks;
self.directionChangeInterval = Math.random() * 120 + 60;
self.targetRotation = Math.random() * Math.PI * 2;
@@ -181,87 +148,117 @@
fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var Pufferfish = Fish.expand(function () {
+var Sunfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('pufferfish', 'Pufferfish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('sunfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.4;
- self.move = function () {
+ self.speed = Math.random() * 0.2 + 0.6;
+ self._move_migrated = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 140 + 80;
+ self.directionChangeInterval = Math.random() * 200 + 100;
self.targetRotation = Math.random() * Math.PI * 2;
}
var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
if (progress < 1) {
self.rotation += (self.targetRotation - self.rotation) * progress;
} else {
self.rotation = self.targetRotation;
}
- var tentativeX = self.x + Math.cos(self.rotation) * self.speed;
- var tentativeY = self.y + Math.sin(self.rotation) * self.speed;
+ self.x += Math.cos(self.rotation) * self.speed;
+ self.y += Math.sin(self.rotation) * self.speed;
var waterBounds = self.getWaterBounds();
- tentativeX = Math.max(waterBounds.left, Math.min(tentativeX, waterBounds.right));
- tentativeY = Math.max(waterBounds.top, Math.min(tentativeY, waterBounds.bottom));
- self.x = tentativeX;
- self.y = tentativeY;
- var waterBounds = self.getWaterBounds();
if (self.x < waterBounds.left || self.x > waterBounds.right) {
self.rotation = Math.PI - self.rotation;
}
if (self.y < waterBounds.top || self.y > waterBounds.bottom) {
self.rotation = -self.rotation;
}
+ self.rotation = self.rotation % (Math.PI * 2);
fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var Clownfish = Fish.expand(function () {
+var Starfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('clownfish', 'Clownfish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('starfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.4;
- self.move = function () {
+ self.speed = Math.random() * 0.2 + 0.5;
+ self._move_migrated = function () {
+ self.x += Math.sin(LK.ticks / 30) * self.speed;
+ self.y += Math.cos(LK.ticks / 30) * self.speed;
+ var waterBounds = self.getWaterBounds();
+ if (self.x < waterBounds.left || self.x > waterBounds.right || self.y < waterBounds.top || self.y > waterBounds.bottom) {
+ self.x = Math.max(waterBounds.left, Math.min(self.x, waterBounds.right));
+ self.y = Math.max(waterBounds.top, Math.min(self.y, waterBounds.bottom));
+ }
+ fishGraphics.rotation = LK.ticks / 30;
+ };
+});
+var RoyalGramma = Fish.expand(function () {
+ var self = Fish.call(this);
+ var fishGraphics = self.attachAsset('royalGramma', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ fishGraphics.scale.set(1, 1);
+ self.speed = Math.random() * 0.2 + 0.5;
+ self._move_migrated = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 110 + 70;
+ self.directionChangeInterval = Math.random() * 160 + 100;
self.targetRotation = Math.random() * Math.PI * 2;
}
var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
if (progress < 1) {
self.rotation += (self.targetRotation - self.rotation) * progress;
} else {
self.rotation = self.targetRotation;
}
- var tentativeX = self.x + Math.cos(self.rotation) * self.speed * 2;
- var tentativeY = self.y + Math.sin(self.rotation) * self.speed * 2;
+ self.x += Math.cos(self.rotation) * self.speed;
+ self.y += Math.sin(self.rotation) * self.speed;
var waterBounds = self.getWaterBounds();
- tentativeX = Math.max(waterBounds.left, Math.min(tentativeX, waterBounds.right));
- tentativeY = Math.max(waterBounds.top, Math.min(tentativeY, waterBounds.bottom));
- self.x = tentativeX;
- self.y = tentativeY;
- var waterBounds = self.getWaterBounds();
if (self.x < waterBounds.left || self.x > waterBounds.right) {
self.rotation = Math.PI - self.rotation;
}
if (self.y < waterBounds.top || self.y > waterBounds.bottom) {
self.rotation = -self.rotation;
}
+ self.rotation = self.rotation % (Math.PI * 2);
fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var Angelfish = Fish.expand(function () {
+var RibbonEel = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('angelfish', 'Angelfish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('ribbonEel', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.45;
- self.move = function () {
+ self.speed = Math.random() * 0.2 + 0.6;
+ self._move_migrated = function () {};
+});
+var RainbowTrout = Fish.expand(function () {
+ var self = Fish.call(this);
+ var fishGraphics = self.attachAsset('rainbowTrout', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ fishGraphics.scale.set(1, 1);
+ self.speed = Math.random() * 0.2 + 0.53;
+ self._move_migrated = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 130 + 90;
+ self.directionChangeInterval = Math.random() * 160 + 120;
self.targetRotation = Math.random() * Math.PI * 2;
}
var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
if (progress < 1) {
@@ -277,130 +274,123 @@
}
if (self.y < waterBounds.top || self.y > waterBounds.bottom) {
self.rotation = -self.rotation;
}
+ self.rotation = self.rotation % (Math.PI * 2);
fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var Aquarium = Container.expand(function () {
- var self = Container.call(this);
- this.getWaterBounds = function () {
- var waterGraphics = LK.getAsset('water', 'Water Graphics', 0, 0);
- return {
- left: (2048 - waterGraphics.width) / 2,
- right: (2048 + waterGraphics.width) / 2,
- top: (2732 - waterGraphics.height) / 2 - 150,
- bottom: (2732 + waterGraphics.height) / 2 - 150
- };
- };
- var aquariumGraphics = self.createAsset('aquarium', 'Aquarium Background', 0, 0);
- aquariumGraphics.width = 2048 * 1.3;
- aquariumGraphics.height = 2732 * 1.3;
- aquariumGraphics.x = (2048 - aquariumGraphics.width) / 2;
- aquariumGraphics.y = (2732 - aquariumGraphics.height) / 2;
- self.addChild(aquariumGraphics);
- var waterGraphics = self.createAsset('water', 'Water Graphics', 0, 0);
- waterGraphics.width = 2048 / 3 * 2 * 1.08;
- waterGraphics.height = 2732 / 3 * 1.26;
- waterGraphics.x = (2048 - waterGraphics.width) / 2;
- waterGraphics.y = (2732 - waterGraphics.height) / 2 - 150;
- waterGraphics.alpha = 0.8;
- self.addChild(waterGraphics);
-});
-var KoiFish = Fish.expand(function () {
+var Pufferfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('koiFish', 'Koi Fish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('pufferfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.48;
- self.move = function () {
- if (self.targetRotation === undefined || LK.ticks - self.rotationStartTime >= self.rotationDuration) {
+ self.speed = Math.random() * 0.2 + 0.4;
+ self._move_migrated = function () {
+ if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
+ self.directionChangeTime = LK.ticks;
+ self.directionChangeInterval = Math.random() * 140 + 80;
self.targetRotation = Math.random() * Math.PI * 2;
- self.rotationStartTime = LK.ticks;
- self.rotationDuration = Math.random() * 130 + 70;
}
- var progress = (LK.ticks - self.rotationStartTime) / self.rotationDuration;
+ var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
if (progress < 1) {
- var deltaRotation = (self.targetRotation - self.rotation) * progress;
- self.rotation += deltaRotation;
+ self.rotation += (self.targetRotation - self.rotation) * progress;
} else {
self.rotation = self.targetRotation;
}
- self.x += Math.cos(self.rotation) * self.speed;
- self.y += Math.sin(self.rotation) * self.speed;
+ var tentativeX = self.x + Math.cos(self.rotation) * self.speed;
+ var tentativeY = self.y + Math.sin(self.rotation) * self.speed;
var waterBounds = self.getWaterBounds();
+ tentativeX = Math.max(waterBounds.left, Math.min(tentativeX, waterBounds.right));
+ tentativeY = Math.max(waterBounds.top, Math.min(tentativeY, waterBounds.bottom));
+ self.x = tentativeX;
+ self.y = tentativeY;
+ var waterBounds = self.getWaterBounds();
if (self.x < waterBounds.left || self.x > waterBounds.right) {
self.rotation = Math.PI - self.rotation;
}
if (self.y < waterBounds.top || self.y > waterBounds.bottom) {
self.rotation = -self.rotation;
}
- self.rotation = self.rotation % (Math.PI * 2);
- if (Math.cos(self.rotation) < 0) {
- fishGraphics.scale.x = -1;
- } else {
- fishGraphics.scale.x = 1;
- }
+ fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var EmperorFish = Fish.expand(function () {
+var PsychedelicFrogfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('emperorFish', 'Emperor Fish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('psychedelicFrogfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.5;
- self.move = function () {};
+ self.speed = Math.random() * 0.2 + 0.4;
+ self._move_migrated = function () {};
});
-var Goldfish = Fish.expand(function () {
+var PeacockBass = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('goldfish', 'Goldfish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('peacockBass', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.4;
- self.move = function () {
- if (self.targetRotation === undefined || LK.ticks - self.rotationStartTime >= self.rotationDuration) {
+ self.speed = Math.random() * 0.2 + 0.65;
+ self._move_migrated = function () {
+ if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
+ self.directionChangeTime = LK.ticks;
+ self.directionChangeInterval = Math.random() * 220 + 160;
self.targetRotation = Math.random() * Math.PI * 2;
- self.rotationStartTime = LK.ticks;
- self.rotationDuration = Math.random() * 140 + 80;
}
- var progress = (LK.ticks - self.rotationStartTime) / self.rotationDuration;
+ var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
if (progress < 1) {
- var deltaRotation = (self.targetRotation - self.rotation) * progress;
- self.rotation += deltaRotation;
+ self.rotation += (self.targetRotation - self.rotation) * progress;
} else {
self.rotation = self.targetRotation;
}
- self.x += Math.cos(self.rotation) * self.speed;
- self.y += Math.sin(self.rotation) * self.speed;
+ self.x += Math.cos(self.rotation) * self.speed * 1.6;
+ self.y += Math.sin(self.rotation) * self.speed * 1.6;
var waterBounds = self.getWaterBounds();
if (self.x < waterBounds.left || self.x > waterBounds.right) {
self.rotation = Math.PI - self.rotation;
}
if (self.y < waterBounds.top || self.y > waterBounds.bottom) {
self.rotation = -self.rotation;
}
self.rotation = self.rotation % (Math.PI * 2);
- if (Math.cos(self.rotation) < 0) {
- fishGraphics.scale.x = -1;
- } else {
- fishGraphics.scale.x = 1;
- }
+ fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var Sunfish = Fish.expand(function () {
+var Parrotfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('sunfish', 'Sunfish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('parrotfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.6;
- self.move = function () {
- if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
- self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 200 + 100;
+ self.speed = Math.random() * 0.2 + 0.50;
+ self._move_migrated = function () {};
+});
+var OscarFish = Fish.expand(function () {
+ var self = Fish.call(this);
+ var fishGraphics = self.attachAsset('oscarFish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ fishGraphics.scale.set(1, 1);
+ self.speed = Math.random() * 0.2 + 0.5;
+ self._move_migrated = function () {
+ if (self.targetRotation === undefined || LK.ticks - self.rotationStartTime >= self.rotationDuration) {
self.targetRotation = Math.random() * Math.PI * 2;
+ self.rotationStartTime = LK.ticks;
+ self.rotationDuration = Math.random() * 150 + 100;
}
- var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
+ var progress = (LK.ticks - self.rotationStartTime) / self.rotationDuration;
if (progress < 1) {
- self.rotation += (self.targetRotation - self.rotation) * progress;
+ var deltaRotation = (self.targetRotation - self.rotation) * progress;
+ self.rotation += deltaRotation;
} else {
self.rotation = self.targetRotation;
}
self.x += Math.cos(self.rotation) * self.speed;
@@ -412,18 +402,25 @@
if (self.y < waterBounds.top || self.y > waterBounds.bottom) {
self.rotation = -self.rotation;
}
self.rotation = self.rotation % (Math.PI * 2);
- fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
+ if (Math.cos(self.rotation) < 0) {
+ fishGraphics.scale.x = -1;
+ } else {
+ fishGraphics.scale.x = 1;
+ }
fishGraphics.rotation = self.rotation;
};
});
-var GuppyFish = Fish.expand(function () {
+var NeonTetra = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('guppyFish', 'Guppy Fish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('neonTetra', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.35;
- self.move = function () {
+ self.speed = Math.random() * 0.2 + 0.3;
+ self._move_migrated = function () {
if (self.targetRotation === undefined || LK.ticks - self.rotationStartTime >= self.rotationDuration) {
self.targetRotation = Math.random() * Math.PI * 2;
self.rotationStartTime = LK.ticks;
self.rotationDuration = Math.random() * 100 + 50;
@@ -452,18 +449,80 @@
}
fishGraphics.rotation = self.rotation;
};
});
-var BettaFish = Fish.expand(function () {
+var MoorishIdol = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('bettaFish', 'Betta Fish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('moorishidol', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
+ self.speed = Math.random() * 0.2 + 0.43;
+ self._move_migrated = function () {};
+});
+var Moonfish = Fish.expand(function () {
+ var self = Fish.call(this);
+ var fishGraphics = self.attachAsset('moonfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ fishGraphics.scale.set(1, 1);
+ self.speed = Math.random() * 0.2 + 0.55;
+ self._move_migrated = function () {
+ self.x += Math.cos(LK.ticks / 60) * self.speed;
+ self.y += Math.sin(LK.ticks / 60) * self.speed;
+ var waterBounds = self.getWaterBounds();
+ if (self.x < waterBounds.left || self.x > waterBounds.right || self.y < waterBounds.top || self.y > waterBounds.bottom) {
+ self.x = Math.max(waterBounds.left, Math.min(self.x, waterBounds.right));
+ self.y = Math.max(waterBounds.top, Math.min(self.y, waterBounds.bottom));
+ }
+ fishGraphics.rotation = Math.atan2(Math.sin(LK.ticks / 60), Math.cos(LK.ticks / 60));
+ };
+});
+var Mandarinfish = Fish.expand(function () {
+ var self = Fish.call(this);
+ var fishGraphics = self.attachAsset('mandarinfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ fishGraphics.scale.set(1, 1);
+ self.speed = Math.random() * 0.2 + 0.4;
+ self._move_migrated = function () {};
+});
+var Lionfish = Fish.expand(function () {
+ var self = Fish.call(this);
+ var fishGraphics = self.attachAsset('lionfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ fishGraphics.scale.set(1, 1);
self.speed = Math.random() * 0.2 + 0.5;
- self.move = function () {
+ self._move_migrated = function () {};
+});
+var LeafySeaDragon = Fish.expand(function () {
+ var self = Fish.call(this);
+ var fishGraphics = self.attachAsset('leafySeaDragon', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ fishGraphics.scale.set(1, 1);
+ self.speed = Math.random() * 0.2 + 0.4;
+ self._move_migrated = function () {};
+});
+var KoiFish = Fish.expand(function () {
+ var self = Fish.call(this);
+ var fishGraphics = self.attachAsset('koiFish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ fishGraphics.scale.set(1, 1);
+ self.speed = Math.random() * 0.2 + 0.48;
+ self._move_migrated = function () {
if (self.targetRotation === undefined || LK.ticks - self.rotationStartTime >= self.rotationDuration) {
self.targetRotation = Math.random() * Math.PI * 2;
self.rotationStartTime = LK.ticks;
- self.rotationDuration = Math.random() * 150 + 100;
+ self.rotationDuration = Math.random() * 130 + 70;
}
var progress = (LK.ticks - self.rotationStartTime) / self.rotationDuration;
if (progress < 1) {
var deltaRotation = (self.targetRotation - self.rotation) * progress;
@@ -488,18 +547,21 @@
}
fishGraphics.rotation = self.rotation;
};
});
-var DiscusFish = Fish.expand(function () {
+var GuppyFish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('discusFish', 'Discus Fish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('guppyFish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.45;
- self.move = function () {
+ self.speed = Math.random() * 0.2 + 0.35;
+ self._move_migrated = function () {
if (self.targetRotation === undefined || LK.ticks - self.rotationStartTime >= self.rotationDuration) {
self.targetRotation = Math.random() * Math.PI * 2;
self.rotationStartTime = LK.ticks;
- self.rotationDuration = Math.random() * 120 + 60;
+ self.rotationDuration = Math.random() * 100 + 50;
}
var progress = (LK.ticks - self.rotationStartTime) / self.rotationDuration;
if (progress < 1) {
var deltaRotation = (self.targetRotation - self.rotation) * progress;
@@ -524,18 +586,21 @@
}
fishGraphics.rotation = self.rotation;
};
});
-var NeonTetra = Fish.expand(function () {
+var Goldfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('neonTetra', 'Neon Tetra Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('goldfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.3;
- self.move = function () {
+ self.speed = Math.random() * 0.2 + 0.4;
+ self._move_migrated = function () {
if (self.targetRotation === undefined || LK.ticks - self.rotationStartTime >= self.rotationDuration) {
self.targetRotation = Math.random() * Math.PI * 2;
self.rotationStartTime = LK.ticks;
- self.rotationDuration = Math.random() * 100 + 50;
+ self.rotationDuration = Math.random() * 140 + 80;
}
var progress = (LK.ticks - self.rotationStartTime) / self.rotationDuration;
if (progress < 1) {
var deltaRotation = (self.targetRotation - self.rotation) * progress;
@@ -560,23 +625,64 @@
}
fishGraphics.rotation = self.rotation;
};
});
-var OscarFish = Fish.expand(function () {
+var GlassCatfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('oscarFish', 'Oscar Fish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('glassCatfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.5;
- self.move = function () {
- if (self.targetRotation === undefined || LK.ticks - self.rotationStartTime >= self.rotationDuration) {
+ self.speed = Math.random() * 0.2 + 0.45;
+ self._move_migrated = function () {
+ self.x += Math.cos(LK.ticks / 100) * self.speed;
+ self.y += Math.sin(LK.ticks / 100) * self.speed;
+ var waterBounds = self.getWaterBounds();
+ if (self.x < waterBounds.left || self.x > waterBounds.right || self.y < waterBounds.top || self.y > waterBounds.bottom) {
+ self.x = Math.max(waterBounds.left, Math.min(self.x, waterBounds.right));
+ self.y = Math.max(waterBounds.top, Math.min(self.y, waterBounds.bottom));
+ }
+ fishGraphics.rotation = Math.atan2(Math.sin(LK.ticks / 100), Math.cos(LK.ticks / 100));
+ };
+});
+var FlameScallop = Fish.expand(function () {
+ var self = Fish.call(this);
+ var fishGraphics = self.attachAsset('flameScallop', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ fishGraphics.scale.set(1, 1);
+ self.speed = Math.random() * 0.2 + 0.3;
+ self._move_migrated = function () {};
+});
+var FlameHawkfish = Fish.expand(function () {
+ var self = Fish.call(this);
+ var fishGraphics = self.attachAsset('flameHawkfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ fishGraphics.scale.set(1, 1);
+ self.speed = Math.random() * 0.2 + 0.48;
+ self._move_migrated = function () {};
+});
+var FlameAngel = Fish.expand(function () {
+ var self = Fish.call(this);
+ var fishGraphics = self.attachAsset('flameAngel', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ fishGraphics.scale.set(1, 1);
+ self.speed = Math.random() * 0.2 + 0.55;
+ self._move_migrated = function () {
+ if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
+ self.directionChangeTime = LK.ticks;
+ self.directionChangeInterval = Math.random() * 170 + 90;
self.targetRotation = Math.random() * Math.PI * 2;
- self.rotationStartTime = LK.ticks;
- self.rotationDuration = Math.random() * 150 + 100;
}
- var progress = (LK.ticks - self.rotationStartTime) / self.rotationDuration;
+ var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
if (progress < 1) {
- var deltaRotation = (self.targetRotation - self.rotation) * progress;
- self.rotation += deltaRotation;
+ self.rotation += (self.targetRotation - self.rotation) * progress;
} else {
self.rotation = self.targetRotation;
}
self.x += Math.cos(self.rotation) * self.speed;
@@ -588,25 +694,34 @@
if (self.y < waterBounds.top || self.y > waterBounds.bottom) {
self.rotation = -self.rotation;
}
self.rotation = self.rotation % (Math.PI * 2);
- if (Math.cos(self.rotation) < 0) {
- fishGraphics.scale.x = -1;
- } else {
- fishGraphics.scale.x = 1;
- }
+ fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var ElectricCatfish = Fish.expand(function () {
+var EmperorFish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('electricCatfish', 'Electric Catfish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('emperorFish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.58;
- self.move = function () {
+ self.speed = Math.random() * 0.2 + 0.5;
+ self._move_migrated = function () {};
+});
+var EmeraldGoby = Fish.expand(function () {
+ var self = Fish.call(this);
+ var fishGraphics = self.attachAsset('emeraldGoby', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ fishGraphics.scale.set(1, 1);
+ self.speed = Math.random() * 0.2 + 0.42;
+ self._move_migrated = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 190 + 130;
+ self.directionChangeInterval = Math.random() * 110 + 55;
self.targetRotation = Math.random() * Math.PI * 2;
}
var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
if (progress < 1) {
@@ -627,17 +742,20 @@
fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var RainbowTrout = Fish.expand(function () {
+var ElectricCatfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('rainbowTrout', 'Rainbow Trout Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('electricCatfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.53;
- self.move = function () {
+ self.speed = Math.random() * 0.2 + 0.58;
+ self._move_migrated = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 160 + 120;
+ self.directionChangeInterval = Math.random() * 190 + 130;
self.targetRotation = Math.random() * Math.PI * 2;
}
var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
if (progress < 1) {
@@ -658,78 +776,36 @@
fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var PsychedelicFrogfish = Fish.expand(function () {
- var self = Fish.call(this);
- var fishGraphics = self.createAsset('psychedelicFrogfish', 'Psychedelic Frogfish Graphics', .5, .5);
- fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.4;
- self.move = function () {};
-});
-var FlameScallop = Fish.expand(function () {
- var self = Fish.call(this);
- var fishGraphics = self.createAsset('flameScallop', 'Flame Scallop Graphics', .5, .5);
- fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.3;
- self.move = function () {};
-});
-var RibbonEel = Fish.expand(function () {
- var self = Fish.call(this);
- var fishGraphics = self.createAsset('ribbonEel', 'Ribbon Eel Graphics', .5, .5);
- fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.6;
- self.move = function () {};
-});
-var LeafySeaDragon = Fish.expand(function () {
- var self = Fish.call(this);
- var fishGraphics = self.createAsset('leafySeaDragon', 'Leafy Sea Dragon Graphics', .5, .5);
- fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.4;
- self.move = function () {};
-});
-var ClownTriggerfish = Fish.expand(function () {
- var self = Fish.call(this);
- var fishGraphics = self.createAsset('clownTriggerfish', 'Clown Triggerfish Graphics', .5, .5);
- fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.5;
- self.move = function () {};
-});
var ElectricBlueDamsel = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('electricBlueDamsel', 'Electric Blue Damsel Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('electricBlueDamsel', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
self.speed = Math.random() * 0.2 + 0.45;
- self.move = function () {};
+ self._move_migrated = function () {};
});
-var YellowTang = Fish.expand(function () {
+var DiscusFish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('yellowTang', 'Yellow Tang Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('discusFish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.5;
- self.move = function () {};
-});
-var FlameHawkfish = Fish.expand(function () {
- var self = Fish.call(this);
- var fishGraphics = self.createAsset('flameHawkfish', 'Flame Hawkfish Graphics', .5, .5);
- fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.48;
- self.move = function () {};
-});
-var RoyalGramma = Fish.expand(function () {
- var self = Fish.call(this);
- var fishGraphics = self.createAsset('royalGramma', 'Royal Gramma Graphics', .5, .5);
- fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.5;
- self.move = function () {
- if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
- self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 160 + 100;
+ self.speed = Math.random() * 0.2 + 0.45;
+ self._move_migrated = function () {
+ if (self.targetRotation === undefined || LK.ticks - self.rotationStartTime >= self.rotationDuration) {
self.targetRotation = Math.random() * Math.PI * 2;
+ self.rotationStartTime = LK.ticks;
+ self.rotationDuration = Math.random() * 120 + 60;
}
- var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
+ var progress = (LK.ticks - self.rotationStartTime) / self.rotationDuration;
if (progress < 1) {
- self.rotation += (self.targetRotation - self.rotation) * progress;
+ var deltaRotation = (self.targetRotation - self.rotation) * progress;
+ self.rotation += deltaRotation;
} else {
self.rotation = self.targetRotation;
}
self.x += Math.cos(self.rotation) * self.speed;
@@ -741,21 +817,28 @@
if (self.y < waterBounds.top || self.y > waterBounds.bottom) {
self.rotation = -self.rotation;
}
self.rotation = self.rotation % (Math.PI * 2);
- fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
+ if (Math.cos(self.rotation) < 0) {
+ fishGraphics.scale.x = -1;
+ } else {
+ fishGraphics.scale.x = 1;
+ }
fishGraphics.rotation = self.rotation;
};
});
-var FlameAngel = Fish.expand(function () {
+var DiamondTetra = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('flameAngel', 'Flame Angel Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('diamondTetra', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.55;
- self.move = function () {
+ self.speed = Math.random() * 0.2 + 0.4;
+ self._move_migrated = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 170 + 90;
+ self.directionChangeInterval = Math.random() * 100 + 50;
self.targetRotation = Math.random() * Math.PI * 2;
}
var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
if (progress < 1) {
@@ -776,17 +859,30 @@
fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var BlueTang = Fish.expand(function () {
+var Dartfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('blueTang', 'Blue Tang Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('dartfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.52;
- self.move = function () {
+ self.speed = Math.random() * 0.2 + 0.45;
+ self._move_migrated = function () {};
+});
+var CrimsonSnapper = Fish.expand(function () {
+ var self = Fish.call(this);
+ var fishGraphics = self.attachAsset('crimsonSnapper', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ fishGraphics.scale.set(1, 1);
+ self.speed = Math.random() * 0.2 + 0.57;
+ self._move_migrated = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 150 + 110;
+ self.directionChangeInterval = Math.random() * 130 + 65;
self.targetRotation = Math.random() * Math.PI * 2;
}
var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
if (progress < 1) {
@@ -807,65 +903,87 @@
fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var Moonfish = Fish.expand(function () {
+var CometFish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('moonfish', 'Moonfish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('cometFish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.55;
- self.move = function () {
- self.x += Math.cos(LK.ticks / 60) * self.speed;
- self.y += Math.sin(LK.ticks / 60) * self.speed;
+ self.speed = Math.random() * 0.2 + 0.6;
+ self._move_migrated = function () {
+ self.x += Math.cos(LK.ticks / 70) * self.speed;
+ self.y += Math.sin(LK.ticks / 70) * self.speed;
var waterBounds = self.getWaterBounds();
if (self.x < waterBounds.left || self.x > waterBounds.right || self.y < waterBounds.top || self.y > waterBounds.bottom) {
self.x = Math.max(waterBounds.left, Math.min(self.x, waterBounds.right));
self.y = Math.max(waterBounds.top, Math.min(self.y, waterBounds.bottom));
}
- fishGraphics.rotation = Math.atan2(Math.sin(LK.ticks / 60), Math.cos(LK.ticks / 60));
+ fishGraphics.rotation = Math.atan2(Math.sin(LK.ticks / 70), Math.cos(LK.ticks / 70));
};
});
-var Starfish = Fish.expand(function () {
+var Clownfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('starfish', 'Starfish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('clownfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.5;
- self.move = function () {
- self.x += Math.sin(LK.ticks / 30) * self.speed;
- self.y += Math.cos(LK.ticks / 30) * self.speed;
+ self.speed = Math.random() * 0.2 + 0.4;
+ self._move_migrated = function () {
+ if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
+ self.directionChangeTime = LK.ticks;
+ self.directionChangeInterval = Math.random() * 110 + 70;
+ self.targetRotation = Math.random() * Math.PI * 2;
+ }
+ var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
+ if (progress < 1) {
+ self.rotation += (self.targetRotation - self.rotation) * progress;
+ } else {
+ self.rotation = self.targetRotation;
+ }
+ var tentativeX = self.x + Math.cos(self.rotation) * self.speed * 2;
+ var tentativeY = self.y + Math.sin(self.rotation) * self.speed * 2;
var waterBounds = self.getWaterBounds();
- if (self.x < waterBounds.left || self.x > waterBounds.right || self.y < waterBounds.top || self.y > waterBounds.bottom) {
- self.x = Math.max(waterBounds.left, Math.min(self.x, waterBounds.right));
- self.y = Math.max(waterBounds.top, Math.min(self.y, waterBounds.bottom));
+ tentativeX = Math.max(waterBounds.left, Math.min(tentativeX, waterBounds.right));
+ tentativeY = Math.max(waterBounds.top, Math.min(tentativeY, waterBounds.bottom));
+ self.x = tentativeX;
+ self.y = tentativeY;
+ var waterBounds = self.getWaterBounds();
+ if (self.x < waterBounds.left || self.x > waterBounds.right) {
+ self.rotation = Math.PI - self.rotation;
}
- fishGraphics.rotation = LK.ticks / 30;
+ if (self.y < waterBounds.top || self.y > waterBounds.bottom) {
+ self.rotation = -self.rotation;
+ }
+ fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
+ fishGraphics.rotation = self.rotation;
};
});
-var GlassCatfish = Fish.expand(function () {
+var ClownTriggerfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('glassCatfish', 'Glass Catfish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('clownTriggerfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.45;
- self.move = function () {
- self.x += Math.cos(LK.ticks / 100) * self.speed;
- self.y += Math.sin(LK.ticks / 100) * self.speed;
- var waterBounds = self.getWaterBounds();
- if (self.x < waterBounds.left || self.x > waterBounds.right || self.y < waterBounds.top || self.y > waterBounds.bottom) {
- self.x = Math.max(waterBounds.left, Math.min(self.x, waterBounds.right));
- self.y = Math.max(waterBounds.top, Math.min(self.y, waterBounds.bottom));
- }
- fishGraphics.rotation = Math.atan2(Math.sin(LK.ticks / 100), Math.cos(LK.ticks / 100));
- };
+ self.speed = Math.random() * 0.2 + 0.5;
+ self._move_migrated = function () {};
});
-var DiamondTetra = Fish.expand(function () {
+var CelestialPearlDanio = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('diamondTetra', 'Diamond Tetra Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('celestialPearlDanio', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.4;
- self.move = function () {
+ self.speed = Math.random() * 0.2 + 0.35;
+ self._move_migrated = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 100 + 50;
+ self.directionChangeInterval = Math.random() * 80 + 40;
self.targetRotation = Math.random() * Math.PI * 2;
}
var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
if (progress < 1) {
@@ -886,27 +1004,30 @@
fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var PeacockBass = Fish.expand(function () {
+var CardinalTetra = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('peacockBass', 'Peacock Bass Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('cardinalTetra', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.65;
- self.move = function () {
+ self.speed = Math.random() * 0.2 + 0.3;
+ self._move_migrated = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 220 + 160;
+ self.directionChangeInterval = Math.random() * 90 + 60;
self.targetRotation = Math.random() * Math.PI * 2;
}
var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
if (progress < 1) {
self.rotation += (self.targetRotation - self.rotation) * progress;
} else {
self.rotation = self.targetRotation;
}
- self.x += Math.cos(self.rotation) * self.speed * 1.6;
- self.y += Math.sin(self.rotation) * self.speed * 1.6;
+ self.x += Math.cos(self.rotation) * self.speed;
+ self.y += Math.sin(self.rotation) * self.speed;
var waterBounds = self.getWaterBounds();
if (self.x < waterBounds.left || self.x > waterBounds.right) {
self.rotation = Math.PI - self.rotation;
}
@@ -917,17 +1038,30 @@
fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var CrimsonSnapper = Fish.expand(function () {
+var Butterflyfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('crimsonSnapper', 'Crimson Snapper Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('butterflyfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.57;
- self.move = function () {
+ self.speed = Math.random() * 0.2 + 0.45;
+ self._move_migrated = function () {};
+});
+var BlueTang = Fish.expand(function () {
+ var self = Fish.call(this);
+ var fishGraphics = self.attachAsset('blueTang', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ fishGraphics.scale.set(1, 1);
+ self.speed = Math.random() * 0.2 + 0.52;
+ self._move_migrated = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 130 + 65;
+ self.directionChangeInterval = Math.random() * 150 + 110;
self.targetRotation = Math.random() * Math.PI * 2;
}
var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
if (progress < 1) {
@@ -948,22 +1082,26 @@
fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
-var CardinalTetra = Fish.expand(function () {
+var BettaFish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('cardinalTetra', 'Cardinal Tetra Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('bettaFish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.3;
- self.move = function () {
- if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
- self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 90 + 60;
+ self.speed = Math.random() * 0.2 + 0.5;
+ self._move_migrated = function () {
+ if (self.targetRotation === undefined || LK.ticks - self.rotationStartTime >= self.rotationDuration) {
self.targetRotation = Math.random() * Math.PI * 2;
+ self.rotationStartTime = LK.ticks;
+ self.rotationDuration = Math.random() * 150 + 100;
}
- var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
+ var progress = (LK.ticks - self.rotationStartTime) / self.rotationDuration;
if (progress < 1) {
- self.rotation += (self.targetRotation - self.rotation) * progress;
+ var deltaRotation = (self.targetRotation - self.rotation) * progress;
+ self.rotation += deltaRotation;
} else {
self.rotation = self.targetRotation;
}
self.x += Math.cos(self.rotation) * self.speed;
@@ -975,37 +1113,38 @@
if (self.y < waterBounds.top || self.y > waterBounds.bottom) {
self.rotation = -self.rotation;
}
self.rotation = self.rotation % (Math.PI * 2);
- fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
+ if (Math.cos(self.rotation) < 0) {
+ fishGraphics.scale.x = -1;
+ } else {
+ fishGraphics.scale.x = 1;
+ }
fishGraphics.rotation = self.rotation;
};
});
-var CometFish = Fish.expand(function () {
+var Bannerfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('cometFish', 'Comet Fish Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('bannerfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.6;
- self.move = function () {
- self.x += Math.cos(LK.ticks / 70) * self.speed;
- self.y += Math.sin(LK.ticks / 70) * self.speed;
- var waterBounds = self.getWaterBounds();
- if (self.x < waterBounds.left || self.x > waterBounds.right || self.y < waterBounds.top || self.y > waterBounds.bottom) {
- self.x = Math.max(waterBounds.left, Math.min(self.x, waterBounds.right));
- self.y = Math.max(waterBounds.top, Math.min(self.y, waterBounds.bottom));
- }
- fishGraphics.rotation = Math.atan2(Math.sin(LK.ticks / 70), Math.cos(LK.ticks / 70));
- };
+ self.speed = Math.random() * 0.2 + 0.46;
+ self._move_migrated = function () {};
});
-var EmeraldGoby = Fish.expand(function () {
+var Angelfish = Fish.expand(function () {
var self = Fish.call(this);
- var fishGraphics = self.createAsset('emeraldGoby', 'Emerald Goby Graphics', .5, .5);
+ var fishGraphics = self.attachAsset('angelfish', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
fishGraphics.scale.set(1, 1);
- self.speed = Math.random() * 0.2 + 0.42;
- self.move = function () {
+ self.speed = Math.random() * 0.2 + 0.45;
+ self._move_migrated = function () {
if (!self.directionChangeTime || LK.ticks - self.directionChangeTime > self.directionChangeInterval) {
self.directionChangeTime = LK.ticks;
- self.directionChangeInterval = Math.random() * 110 + 55;
+ self.directionChangeInterval = Math.random() * 130 + 90;
self.targetRotation = Math.random() * Math.PI * 2;
}
var progress = (LK.ticks - self.directionChangeTime) / self.directionChangeInterval;
if (progress < 1) {
@@ -1021,32 +1160,31 @@
}
if (self.y < waterBounds.top || self.y > waterBounds.bottom) {
self.rotation = -self.rotation;
}
- self.rotation = self.rotation % (Math.PI * 2);
fishGraphics.scale.x = Math.cos(self.rotation) < 0 ? -1 : 1;
fishGraphics.rotation = self.rotation;
};
});
/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
-****/
+****/
var aquarium = game.addChild(new Aquarium());
game.setBackgroundColor(0x008080);
var fishes = [];
var fishTypes = [Wrasses, Parrotfish, Dartfish, MoorishIdol, Tangfish, Bannerfish, Butterflyfish, Mandarinfish, Lionfish, Surgeonfish, Pufferfish, Clownfish, Angelfish, KoiFish, EmperorFish, Goldfish, Sunfish, GuppyFish, BettaFish, DiscusFish, NeonTetra, OscarFish, PsychedelicFrogfish, FlameScallop, RibbonEel, LeafySeaDragon, ClownTriggerfish, ElectricBlueDamsel, YellowTang, FlameHawkfish, RoyalGramma, FlameAngel, BlueTang, Moonfish, Starfish, CardinalTetra];
var fishTypes = [ZebraDanio, CelestialPearlDanio, Wrasses, Parrotfish, Dartfish, MoorishIdol, Tangfish, Bannerfish, Butterflyfish, Mandarinfish, Lionfish, Surgeonfish, Pufferfish, Clownfish, Angelfish, KoiFish, EmperorFish, Goldfish, Sunfish, GuppyFish, BettaFish, DiscusFish, NeonTetra, OscarFish, ElectricCatfish, RainbowTrout, PsychedelicFrogfish, FlameScallop, RibbonEel, LeafySeaDragon, ClownTriggerfish, ElectricBlueDamsel, YellowTang, FlameHawkfish, RoyalGramma, FlameAngel, BlueTang, Moonfish, Starfish, GlassCatfish, DiamondTetra, PeacockBass, CrimsonSnapper, CardinalTetra, CometFish, EmeraldGoby];
fishTypes.forEach(function (fishType) {
var fish = new fishType();
- if (typeof fish.move === 'function') {
+ if (typeof fish._move_migrated === 'function') {
var waterBounds = aquarium.getWaterBounds();
var centerX = waterBounds.left + (waterBounds.right - waterBounds.left) / 2;
var centerY = waterBounds.top + (waterBounds.bottom - waterBounds.top) / 2;
var maxDistance = 600;
@@ -1059,7 +1197,7 @@
}
});
LK.on('tick', function () {
for (var i = 0; i < fishes.length; i++) {
- fishes[i].move();
+ fishes[i]._move_migrated();
}
});
\ No newline at end of file
An aquarium with no fish on a sheel in a photorealistic style. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic goldfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic Angelfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic koyfish swiming to the right. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic gupyfish swiming to the right. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic bettafish swiming to the right. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic clownfish swiming to the right. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic pufferfish swiming to the right. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic surgeonfish swiming to the right. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic buble of water. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic fish egg. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic celestial pearl danio. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic Parrotfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic dartfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic moorishidol. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic tangfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic bannerfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic butterflyfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A realistic mandarinfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a realistic lionfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a realistic emperorFish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a realistic sunfish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a realistic discusFish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a realistic neonTetra. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a realistic oscarFish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a cardinal tetra. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a tang fish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a clown fish. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.