Files
bworld/client/game.ts
T
2026-03-06 17:35:22 -03:00

55 lines
1.6 KiB
TypeScript

import { Entity } from "$/common/ecs/mod.ts";
import { Position } from "$/common/components/position.ts";
import { ClientWorld } from "./client_world.ts";
import { Dimension } from "./components/dimension.ts";
import { create_player } from "./player.ts";
import { UIButton } from "./components/ui_components.ts";
import { open_about } from "./about.ts";
import { create_crop_entity, Crop } from "./components/crop.ts";
import { generate } from "./generation.ts";
import { canvas } from "./renderer.ts";
export function start_game(world: ClientWorld) {
world.state = "game";
world.clear_entities();
const dimension = new Entity("dimension");
dimension.add(new Dimension([]));
world.add_entity(dimension);
generate(dimension.get(Dimension)!, 100, 100);
create_player(world);
// UI !
const unpause_button = new Entity("unpausebutton");
unpause_button.add(new Position(canvas.width / 2 - 150, canvas.height / 2 - 80));
unpause_button.add(new UIButton("Unpause", 320, 64, () => world.state = "paused"));
world.add_entity(unpause_button);
const about_button = new Entity("aboutbutton");
about_button.add(new Position(canvas.width / 2 - 150, canvas.height / 2 + 80));
about_button.add(new UIButton("About", 320, 64, () => open_about()));
world.add_entity(about_button);
world.add_entity(create_crop_entity(
0,
0,
new Crop("bworld:potato"),
));
world.add_entity(create_crop_entity(
32,
0,
new Crop("bworld:carrot"),
));
world.add_entity(create_crop_entity(
0,
32,
new Crop("bworld:pumpkin"),
));
world.add_entity(create_crop_entity(
32,
32,
new Crop("bworld:tomato"),
));
}