Przeglądaj źródła

initial commit

tags/v0.1.4^2
Shaun 7 lat temu
rodzic
commit
ad598618f3
4 zmienionych plików z 144 dodań i 0 usunięć
  1. +1
    -0
      src/client/js/components/components.js
  2. +51
    -0
      src/client/js/components/lightningEffect.js
  3. +1
    -0
      src/client/js/components/player.js
  4. +91
    -0
      src/client/js/rendering/lightningBuilder.js

+ 1
- 0
src/client/js/components/components.js Wyświetl plik

@@ -4,6 +4,7 @@ var components = [
'player',
'pather',
'attackAnimation',
'lightningEffect',
'moveAnimation',
'bumpAnimation',
'animation',


+ 51
- 0
src/client/js/components/lightningEffect.js Wyświetl plik

@@ -0,0 +1,51 @@
define([
'js/rendering/lightningBuilder',
'js/rendering/effects'
], function(
lightningBuilder,
effects
) {
return {
type: 'lightningEffect',

cd: 0,
cdMax: 1,

effect: null,

init: function() {
effects.register(this);

this.effect = lightningBuilder.build({
fromX: this.obj.x + 0,
fromY: this.obj.y + 0.5,
toX: this.obj.x - 2.5,
toY: this.obj.y - 6.5
});
},

renderManual: function() {
if (this.cd > 0) {
this.cd--;
return;
}

this.cd = this.cdMax;

lightningBuilder.destroy(this.effect);

this.effect = lightningBuilder.build({
fromX: this.obj.x + 0,
fromY: this.obj.y + 0.5,
toX: this.obj.x - 2.5,
toY: this.obj.y - 6.5
});
},

destroyManual: function() {
lightningBuilder.destroy(this.effect);

effects.unregister(this);
}
};
});

+ 1
- 0
src/client/js/components/player.js Wyświetl plik

@@ -19,6 +19,7 @@ define([
this.obj.addComponent('keyboardMover');
this.obj.addComponent('mouseMover');
this.obj.addComponent('serverActions');
this.obj.addComponent('lightningEffect');

this.obj.addComponent('pather');



+ 91
- 0
src/client/js/rendering/lightningBuilder.js Wyświetl plik

@@ -0,0 +1,91 @@
define([
'js/rendering/renderer'
], function(
renderer
) {
var scale = 40;
var scaleMult = 5;

return {
build: function(config) {
var obj = {
lines: []
};

var divisions = 25;
var maxDeviate = scale * 0.35;

var fx = config.fromX * scale;
var fy = config.fromY * scale;

var tx = config.toX * scale;
var ty = config.toY * scale;

var angle = Math.atan2(ty - fy, tx - fx);
var distance = Math.sqrt(Math.pow(tx - fx, 2) + Math.pow(ty - fy, 2));
var divDistance = distance / divisions;

var x = fx;
var y = fy;

for (var i = 0; i < divisions; i++) {
var line = {
sprites: []
};

var ntx = fx + (Math.cos(angle) * (divDistance * i)) + ~~(Math.random() * (maxDeviate * 2)) - maxDeviate;
var nty = fy + (Math.sin(angle) * (divDistance * i)) + ~~(Math.random() * (maxDeviate * 2)) - maxDeviate;

if (i == divisions - 1) {
ntx = tx;
nty = ty;
}

var nAngle = Math.atan2(nty - y, ntx - x);
var steps = ~~(Math.sqrt(Math.pow(ntx - x, 2) + Math.pow(nty - y, 2)) / scaleMult);

for (var j = 0; j < steps; j++) {
var c = 105 + ~~(Math.random() * 150);
line.sprites.push(renderer.buildRectangle({
x: ~~(x / scaleMult) * scaleMult,
y: ~~(y / scaleMult) * scaleMult,
w: scaleMult,
h: scaleMult,
color: this.toHex(c, c, ~~(Math.random() * 100)),
layerName: 'effects'
}));

line.sprites[line.sprites.length - 1].blendMode = PIXI.BLEND_MODES.ADD;

x += Math.cos(nAngle) * scaleMult;
y += Math.sin(nAngle) * scaleMult;
}

obj.lines.push(line);
}

return obj;
},

toHex: function rgbToHex(r, g, b) {
var componentToHex = function(c) {
var hex = c.toString(16);
return hex.length == 1 ? '0' + hex : hex;
};

return '0x' + componentToHex(r) + componentToHex(g) + componentToHex(b);
},

update: function(obj) {

},

destroy: function(obj) {
obj.lines.forEach(function(l) {
l.sprites.forEach(function(s) {
s.parent.removeChild(s);
});
});
}
};
});

Ładowanie…
Anuluj
Zapisz