precision-game/js/entity.mjs
2023-10-25 19:17:07 +02:00

87 lines
1.4 KiB
JavaScript

import { assert } from "./test.mjs";
export function create (x = 0, y = 0, width = 0, height = 0) {
return {
pos: {
x: x,
y: y,
},
size: {
x: width,
y: height,
},
};
}
export function get_pos (entity) {
return entity.pos;
}
export function set_pos (entity, x, y) {
entity.pos.x = x;
entity.pos.y = y;
}
export function get_size (entity) {
return entity.size;
}
export function set_size (entity, x, y) {
entity.size.x = x;
entity.size.y = y;
}
export function move (entity, x, y) {
entity.pos.x += x;
entity.pos.y += y;
}
// TESTS
assert("entity creation works.", _ => {
const e = create(1, 2, 3, 4);
return(
e.pos.x == 1 &&
e.pos.y == 2 &&
e.size.x == 3 &&
e.size.y == 4
);
});
assert("entity `get_pos` works.", _ => {
const e = create(1, 2);
const {x, y} = get_pos(e);
return(x === 1 && y === 2);
});
assert("entity `set_pos` works.", _ => {
const e = create();
set_pos(e, 5, 7);
const {x, y} = get_pos(e);
return(x === 5 && y === 7);
});
assert("entity `get_size` works.", _ => {
const e = create(2, 4, 6, 8);
const {x, y} = get_size(e);
return(x === 6 && y === 8);
});
assert("entity `set_size` works.", _ => {
const e = create(2, 4, 6, 8);
set_size(e, 3, 2);
const {x, y} = get_size(e);
return(x === 3 && y === 2);
});
assert("entity `move` works.", _ => {
const e = create(0, 0);
move(e, 50, 25);
const {x, y} = get_pos(e);
return(x === 50 && y === 25);
});