WIP: move multiple ships
This commit is contained in:
@@ -255,6 +255,8 @@ const Acceleration = {};
|
|||||||
const AngularAcceleration = {};
|
const AngularAcceleration = {};
|
||||||
const AngularVelocity = {};
|
const AngularVelocity = {};
|
||||||
const Degrees = {};
|
const Degrees = {};
|
||||||
|
const Nodes = {};
|
||||||
|
const CannonNodes = {};
|
||||||
|
|
||||||
// Points = {
|
// Points = {
|
||||||
// "wall_1": "0,0 2,0 1,1",
|
// "wall_1": "0,0 2,0 1,1",
|
||||||
@@ -288,6 +290,18 @@ const Shoot = (() => {
|
|||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
const Draw = (() => {
|
||||||
|
return {
|
||||||
|
update: ({ entity_id }) => {
|
||||||
|
const node = Nodes[entity_id];
|
||||||
|
const gun = CannonNodes[entity_id];
|
||||||
|
newPos = Position[entity_id];
|
||||||
|
node.style.transform = `translate(${newPos.x}px, ${newPos.y}px)`;
|
||||||
|
gun.style.transform = `rotate(${Degrees[entity_id]}deg)`;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
|
||||||
const Rotate = (() => {
|
const Rotate = (() => {
|
||||||
const metersPerMillisecond = 0.001;
|
const metersPerMillisecond = 0.001;
|
||||||
|
|
||||||
@@ -778,9 +792,12 @@ const Move = (() => {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
update: ({ entity_id }, elapsed) => {
|
update: ({ entity_id }, elapsed) => {
|
||||||
|
const gravity = 0.1;
|
||||||
|
// affectedByWalls & affectedByGravity toggles?
|
||||||
const { x: px, y: py } = Position[entity_id];
|
const { x: px, y: py } = Position[entity_id];
|
||||||
const { x: vx, y: vy } = Velocity[entity_id];
|
const { x: vx, y: vy } = Velocity[entity_id];
|
||||||
const { x: ax, y: ay } = Acceleration[entity_id];
|
let { x: ax, y: ay } = Acceleration[entity_id];
|
||||||
|
ay += gravity;
|
||||||
|
|
||||||
const vr = {
|
const vr = {
|
||||||
x: Math.round(vx * 100 + ax * 100) / 100,
|
x: Math.round(vx * 100 + ax * 100) / 100,
|
||||||
@@ -1039,8 +1056,10 @@ function init() {
|
|||||||
AngularAcceleration[entity_id] = s.angularAcceleration;
|
AngularAcceleration[entity_id] = s.angularAcceleration;
|
||||||
AngularVelocity[entity_id] = s.angularVelocity;
|
AngularVelocity[entity_id] = s.angularVelocity;
|
||||||
Degrees[entity_id] = s.degrees;
|
Degrees[entity_id] = s.degrees;
|
||||||
let node = document.querySelector(`#${entity_id}`);
|
Nodes[entity_id] = document.querySelector(`#${entity_id}`);
|
||||||
node.style.transform = `translate(${s.position.x}px, ${s.position.y}px)`;
|
CannonNodes[entity_id] = document.querySelector(`#${entity_id} .cannon`);
|
||||||
|
// let node = document.querySelector(`#${entity_id}`);
|
||||||
|
// node.style.transform = `translate(${s.position.x}px, ${s.position.y}px)`;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ships.forEach(({ entity_id }) => {
|
Ships.forEach(({ entity_id }) => {
|
||||||
@@ -1063,6 +1082,10 @@ function init() {
|
|||||||
degrees: 0
|
degrees: 0
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Ships.forEach(({ entity_id }) => {
|
||||||
|
Draw.update({ entity_id });
|
||||||
|
});
|
||||||
|
|
||||||
[...edgeContainer.children].forEach(c => c.remove());;
|
[...edgeContainer.children].forEach(c => c.remove());;
|
||||||
|
|
||||||
wallElements.forEach(w => w.setAttribute('fill', 'black'));
|
wallElements.forEach(w => w.setAttribute('fill', 'black'));
|
||||||
@@ -1333,17 +1356,9 @@ function animate(timestamp) {
|
|||||||
Ships.forEach(({ entity_id }) => {
|
Ships.forEach(({ entity_id }) => {
|
||||||
Move.update({ entity_id }, elapsed);
|
Move.update({ entity_id }, elapsed);
|
||||||
Rotate.update({ entity_id }, elapsed);
|
Rotate.update({ entity_id }, elapsed);
|
||||||
|
Draw.update({ entity_id });
|
||||||
});
|
});
|
||||||
|
|
||||||
// let newPos = updateShip(s, elapsed);
|
|
||||||
newPos = Position[Ships[0].entity_id];
|
|
||||||
let newVel = Velocity[Ships[0].entity_id];
|
|
||||||
|
|
||||||
s.node.style.transform = `translate(${newPos.x}px, ${newPos.y}px)`;
|
|
||||||
positionEl.innerText = `${newPos.x},${newPos.y}`;
|
|
||||||
velocityEl.innerText = `${newVel.x},${newVel.y}`;
|
|
||||||
gun.style.transform = `rotate(${Degrees[Ships[0].entity_id]}deg)`;
|
|
||||||
|
|
||||||
// updateEdges(position);
|
// updateEdges(position);
|
||||||
if (drawCollisionLines) updateTriangles(position);
|
if (drawCollisionLines) updateTriangles(position);
|
||||||
|
|
||||||
@@ -1392,7 +1407,7 @@ function drawShot(shot) {
|
|||||||
lineEl.setAttribute('y2', shot.target.y);
|
lineEl.setAttribute('y2', shot.target.y);
|
||||||
lineEl.addEventListener('transitionend', e => e.target.remove());
|
lineEl.addEventListener('transitionend', e => e.target.remove());
|
||||||
setTimeout(() => lineEl.classList.add('fade'), 1000);
|
setTimeout(() => lineEl.classList.add('fade'), 1000);
|
||||||
const tipEl = document.querySelector(".cannon .tip")
|
const tipEl = document.querySelector("#ship1 .cannon .tip")
|
||||||
tipEl.classList.remove("recoil");
|
tipEl.classList.remove("recoil");
|
||||||
setTimeout(() => tipEl.classList.add('recoil'), 0);
|
setTimeout(() => tipEl.classList.add('recoil'), 0);
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 52 KiB |
Reference in New Issue
Block a user