80 lines
1.5 KiB
JavaScript
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",
|
|
});
|