boxes/js/player.mjs

80 lines
1.5 KiB
JavaScript

import * as world from "./world.mjs";
import { on_press } from "./input.mjs";
import * as entity from "./entity.mjs";
const player = entity.create(world.get_root(), 2, 1, "#080");
export function move (d_x, d_y) {
entity.move(player, d_x, d_y);
}
on_press("ArrowLeft", _ => {
move(-1, 0);
});
on_press("ArrowRight", _ => {
move(1, 0);
});
on_press("ArrowUp", _ => {
move(0, -1);
});
on_press("ArrowDown", _ => {
move(0, 1);
});
on_press(" ", _ => {
world.set_tile(player.box, player.x, player.y, {
type: "box",
box: world.create_box(player.box),
});
});
function clear_tile (x, y) {
world.clear_tile(player.box, x, y);
}
on_press("Backspace", _ => {
clear_tile(player.x, player.y);
clear_tile(player.x + 1, player.y);
clear_tile(player.x - 1, player.y);
});
export function get_player_box () {
return player.box;
}
function set_place_key (key, tile) {
on_press(key, _ => {
world.set_tile(player.box, player.x, player.y, structuredClone(tile));
});
}
function set_painting_key (key, color) {
set_place_key(key, {
type: "paint",
color,
});
}
// RGB
set_painting_key("q", "#f00");
set_painting_key("w", "#0f0");
set_painting_key("e", "#00f");
// YCM
set_painting_key("a", "#ff0");
set_painting_key("s", "#0ff");
set_painting_key("d", "#f0f");
// background colors
set_painting_key("z", "#888");
set_painting_key("x", "#aaa");
// black and white
set_painting_key("c", "#000");
set_painting_key("v", "#fff");
// grass test
set_place_key("g", {
type: "grass",
});