forked from sent/waves
158 lines
3.8 KiB
JavaScript
158 lines
3.8 KiB
JavaScript
Game.addToManifest({
|
|
lovehat: "sprites/peeps/lovehat.json",
|
|
lover_shirt: "sprites/peeps/lover_shirt.json"
|
|
});
|
|
|
|
/****
|
|
|
|
FRAMES for "face":
|
|
08: LUV
|
|
09: Embarrassed looking up
|
|
10: Embarrassed blink
|
|
11: Embarrassed look fwd
|
|
|
|
****/
|
|
|
|
function LoverPeep(scene){
|
|
|
|
var self = this;
|
|
NormalPeep.apply(self, [scene]);
|
|
self._CLASS_ = "LoverPeep";
|
|
|
|
// Add the body & face sprites
|
|
self.hatMC = self.addMovieClip("lovehat");
|
|
self.shirtMC = self.addMovieClip("lover_shirt");
|
|
self.faceMC.gotoAndStop(8);
|
|
|
|
// Set Type: ALSO CHANGE SHIRT
|
|
var _oldSetType = self.setType;
|
|
self.setType = function(type){
|
|
_oldSetType(type);
|
|
self.shirtMC.gotoAndStop((type=="circle") ? 0 : 1);
|
|
};
|
|
|
|
// STARTING POS
|
|
self.x = 1000;
|
|
self.y = 580;
|
|
|
|
// Follow?
|
|
self.follows = null;
|
|
self.follow = function(follow){
|
|
self.follows = follow;
|
|
self.x = self.follows.x;
|
|
self.y = self.follows.y;
|
|
};
|
|
self.callbacks.update = function(){
|
|
if(self.follows){
|
|
|
|
var f = self.follows;
|
|
var tx = f.x - Math.cos(f.direction)*20;
|
|
var ty = f.y - Math.sin(f.direction)*20;
|
|
|
|
// LOOP THEM BOUNDS
|
|
var margin = 50;
|
|
var dx = tx-self.x;
|
|
while(dx>300){
|
|
tx -= Game.width+margin*2;
|
|
dx = tx-self.x;
|
|
}
|
|
while(dx<-300){
|
|
tx += Game.width+margin*2;
|
|
dx = tx-self.x;
|
|
}
|
|
var dy = ty-self.y;
|
|
while(dy>300){
|
|
ty -= Game.height+margin*2;
|
|
dy = ty-self.y;
|
|
}
|
|
while(dy<-300){
|
|
ty += Game.height+margin*2;
|
|
dy = ty-self.y;
|
|
}
|
|
|
|
var direction = Math.atan2(dy,dx);
|
|
self.direction = direction;
|
|
}else{
|
|
|
|
// stay within game frame
|
|
/*self.stayWithinRect({
|
|
l:100, r:860, t:100, b:480
|
|
},0.05);*/
|
|
|
|
}
|
|
|
|
if(self.follows && self.isEmbarrassed && self.x>1100){
|
|
self.follows.kill();
|
|
self.kill();
|
|
}
|
|
|
|
if(self.follows && self.x<-500){
|
|
self.follows.kill();
|
|
self.kill();
|
|
}
|
|
|
|
};
|
|
self.callbacks.startWalking = function(){
|
|
self.direction = 3.3; // a bit upwards from a full-left
|
|
self.speed = 1.3;
|
|
};
|
|
var _pastWalkAnim = self.walkAnim;
|
|
self.walkAnim = function(){
|
|
if(self.follows) self.hop+=self.speed/120;
|
|
_pastWalkAnim();
|
|
};
|
|
self.callbacks.startWalking();
|
|
|
|
// STAHP. *THEN walk.*
|
|
self.stopWalking();
|
|
self.setTimeout(function(){
|
|
self.startWalking();
|
|
},_s(BEAT*4));
|
|
|
|
// MAKE EMBARRASSED
|
|
self.isEmbarrassed = false;
|
|
self.makeEmbarrassed = function(){
|
|
|
|
self.clearAnims(); // just in case...
|
|
|
|
// 1) Stop & look
|
|
var tv = scene.tv;
|
|
self.x = tv.x;
|
|
self.y = tv.y-5-Math.random(); // tiny offset to avoid glitchy depth-sort
|
|
if(self.type=="square"){
|
|
self.x += 80;
|
|
}else{
|
|
self.x += 120;
|
|
}
|
|
self.stopWalking(true);
|
|
self.faceMC.gotoAndStop(9);
|
|
self.flip = (tv.x>self.x) ? 1 : -1;
|
|
var WAIT = 3.7*BEAT;
|
|
self.isWatching = true;
|
|
|
|
// 2) Blink...
|
|
self.setTimeout(function(){
|
|
|
|
self.isWatching = false;
|
|
self.faceMC.gotoAndStop(10);
|
|
self.bounce = 1.2;
|
|
|
|
},_s(WAIT));
|
|
|
|
// 3) And go on.
|
|
self.setTimeout(function(){
|
|
|
|
self.isEmbarrassed = true;
|
|
self.faceMC.gotoAndStop(11);
|
|
|
|
// GET ON OUT
|
|
self.startWalking();
|
|
self.loop = false;
|
|
self.direction = 0;
|
|
self.speed = 3;
|
|
|
|
},_s(WAIT+0.06));
|
|
|
|
};
|
|
|
|
} |