Rename everything "tile" to "block"

This commit is contained in:
2026-03-14 19:16:25 -03:00
parent e73cbcf5db
commit ea6a6acfbe
23 changed files with 74 additions and 75 deletions
@@ -1,4 +1,4 @@
import { EverythingRegistry, TileRegistry } from "$/common/everything_registry.ts"; import { BlockRegistry, EverythingRegistry } from "$/common/everything_registry.ts";
import { Container, Inventory } from "../inventory.ts"; import { Container, Inventory } from "../inventory.ts";
import { PlayerComponent } from "../player.ts"; import { PlayerComponent } from "../player.ts";
import { GuiChest } from "$/client/gui/gui_chest.ts"; import { GuiChest } from "$/client/gui/gui_chest.ts";
@@ -7,7 +7,7 @@ interface TileChestData {
inventory: Inventory; inventory: Inventory;
} }
EverythingRegistry.register<TileRegistry<TileChestData>>("blocks", "bworld:chest", { EverythingRegistry.register<BlockRegistry<TileChestData>>("blocks", "bworld:chest", {
texture_id: "bworld:chest", texture_id: "bworld:chest",
has_collision: false, has_collision: false,
@@ -1,4 +1,4 @@
import { EverythingRegistry, TileRegistry } from "$/common/everything_registry.ts"; import { BlockRegistry, EverythingRegistry } from "$/common/everything_registry.ts";
import { ItemStack } from "../inventory.ts"; import { ItemStack } from "../inventory.ts";
import { PlayerComponent } from "../player.ts"; import { PlayerComponent } from "../player.ts";
@@ -121,25 +121,25 @@ function create_crop_tile(crop_id: string) {
crop.growth_time = 0; crop.growth_time = 0;
} }
}, },
} as TileRegistry<TileCropData>; } as BlockRegistry<TileCropData>;
} }
EverythingRegistry.register<TileRegistry<TileCropData>>( EverythingRegistry.register<BlockRegistry<TileCropData>>(
"blocks", "blocks",
"bworld:tomato_crop", "bworld:tomato_crop",
create_crop_tile("bworld:tomato"), create_crop_tile("bworld:tomato"),
); );
EverythingRegistry.register<TileRegistry<TileCropData>>( EverythingRegistry.register<BlockRegistry<TileCropData>>(
"blocks", "blocks",
"bworld:carrot_crop", "bworld:carrot_crop",
create_crop_tile("bworld:carrot"), create_crop_tile("bworld:carrot"),
); );
EverythingRegistry.register<TileRegistry<TileCropData>>( EverythingRegistry.register<BlockRegistry<TileCropData>>(
"blocks", "blocks",
"bworld:potato_crop", "bworld:potato_crop",
create_crop_tile("bworld:potato"), create_crop_tile("bworld:potato"),
); );
EverythingRegistry.register<TileRegistry<TileCropData>>( EverythingRegistry.register<BlockRegistry<TileCropData>>(
"blocks", "blocks",
"bworld:pumpkin_crop", "bworld:pumpkin_crop",
create_crop_tile("bworld:pumpkin"), create_crop_tile("bworld:pumpkin"),
@@ -1,8 +1,8 @@
import { EverythingRegistry, TileRegistry } from "$/common/everything_registry.ts"; import { BlockRegistry, EverythingRegistry } from "$/common/everything_registry.ts";
import { WateringCanData } from "../items/watering_can.ts"; import { WateringCanData } from "../items/watering_can.ts";
import { PlayerComponent } from "../player.ts"; import { PlayerComponent } from "../player.ts";
EverythingRegistry.register<TileRegistry>("blocks", "bworld:dirt", { EverythingRegistry.register<BlockRegistry>("blocks", "bworld:dirt", {
texture_id: "bworld:dirt", texture_id: "bworld:dirt",
has_collision: false, has_collision: false,
@@ -16,7 +16,7 @@ EverythingRegistry.register<TileRegistry>("blocks", "bworld:dirt", {
}, },
}); });
EverythingRegistry.register<TileRegistry>("blocks", "bworld:hoed_dirt", { EverythingRegistry.register<BlockRegistry>("blocks", "bworld:hoed_dirt", {
texture_id: "bworld:hoed_dirt", texture_id: "bworld:hoed_dirt",
has_collision: false, has_collision: false,
@@ -50,7 +50,7 @@ EverythingRegistry.register<TileRegistry>("blocks", "bworld:hoed_dirt", {
}, },
}); });
EverythingRegistry.register<TileRegistry>("blocks", "bworld:hoed_watered_dirt", { EverythingRegistry.register<BlockRegistry>("blocks", "bworld:hoed_watered_dirt", {
texture_id: "bworld:hoed_watered_dirt", texture_id: "bworld:hoed_watered_dirt",
has_collision: false, has_collision: false,
@@ -1,4 +1,4 @@
import { EverythingRegistry, TileRegistry } from "$/common/everything_registry.ts"; import { BlockRegistry, EverythingRegistry } from "$/common/everything_registry.ts";
import { Container, Inventory, ItemStack } from "../inventory.ts"; import { Container, Inventory, ItemStack } from "../inventory.ts";
import { PlayerComponent } from "../player.ts"; import { PlayerComponent } from "../player.ts";
import { GuiFurnace } from "$/client/gui/gui_furnace.ts"; import { GuiFurnace } from "$/client/gui/gui_furnace.ts";
@@ -66,7 +66,7 @@ interface TileChestData {
fuel: number; fuel: number;
} }
EverythingRegistry.register<TileRegistry<TileChestData>>("blocks", "bworld:furnace", { EverythingRegistry.register<BlockRegistry<TileChestData>>("blocks", "bworld:furnace", {
texture_id: "bworld:furnace", texture_id: "bworld:furnace",
has_collision: false, has_collision: false,
@@ -1,7 +1,7 @@
import { EverythingRegistry, TileRegistry } from "$/common/everything_registry.ts"; import { BlockRegistry, EverythingRegistry } from "$/common/everything_registry.ts";
import { PlayerComponent } from "../player.ts"; import { PlayerComponent } from "../player.ts";
EverythingRegistry.register<TileRegistry>("blocks", "bworld:grass", { EverythingRegistry.register<BlockRegistry>("blocks", "bworld:grass", {
texture_id: "bworld:grass", texture_id: "bworld:grass",
has_collision: false, has_collision: false,
+12
View File
@@ -0,0 +1,12 @@
import { BlockRegistry, EverythingRegistry } from "$/common/everything_registry.ts";
EverythingRegistry.register<BlockRegistry>("blocks", "bworld:log", {
texture_id: "bworld:log_side",
has_collision: true,
});
EverythingRegistry.register<BlockRegistry>("blocks", "bworld:leaves", {
texture_id: "bworld:leaves",
has_collision: true,
transparent: true,
});
+6
View File
@@ -0,0 +1,6 @@
import { BlockRegistry, EverythingRegistry } from "$/common/everything_registry.ts";
EverythingRegistry.register<BlockRegistry>("blocks", "bworld:sand", {
texture_id: "bworld:sand",
has_collision: true,
});
+6
View File
@@ -0,0 +1,6 @@
import { BlockRegistry, EverythingRegistry } from "$/common/everything_registry.ts";
EverythingRegistry.register<BlockRegistry>("blocks", "bworld:snow", {
texture_id: "bworld:snow",
has_collision: true,
});
+6
View File
@@ -0,0 +1,6 @@
import { BlockRegistry, EverythingRegistry } from "$/common/everything_registry.ts";
EverythingRegistry.register<BlockRegistry>("blocks", "bworld:stone", {
texture_id: "bworld:stone",
has_collision: true,
});
@@ -1,8 +1,8 @@
import { EverythingRegistry, TileRegistry } from "$/common/everything_registry.ts"; import { BlockRegistry, EverythingRegistry } from "$/common/everything_registry.ts";
import { ItemStack } from "../inventory.ts"; import { ItemStack } from "../inventory.ts";
import { PlayerComponent } from "../player.ts"; import { PlayerComponent } from "../player.ts";
EverythingRegistry.register<TileRegistry>("blocks", "bworld:tree", { EverythingRegistry.register<BlockRegistry>("blocks", "bworld:tree", {
texture_id: "bworld:tree", texture_id: "bworld:tree",
has_collision: false, has_collision: false,
+6
View File
@@ -0,0 +1,6 @@
import { BlockRegistry, EverythingRegistry } from "$/common/everything_registry.ts";
EverythingRegistry.register<BlockRegistry>("blocks", "bworld:water", {
texture_id: "bworld:water",
has_collision: false,
});
+2 -2
View File
@@ -1,5 +1,5 @@
import { Component } from "$/common/ecs/mod.ts"; import { Component } from "$/common/ecs/mod.ts";
import { EverythingRegistry, TileRegistry } from "$/common/everything_registry.ts"; import { BlockRegistry, EverythingRegistry } from "$/common/everything_registry.ts";
import { Faces } from "../../common/constants.ts"; import { Faces } from "../../common/constants.ts";
import { AssetManager } from "../assets.ts"; import { AssetManager } from "../assets.ts";
import { generate_chunk } from "../generation.ts"; import { generate_chunk } from "../generation.ts";
@@ -53,7 +53,7 @@ export class Dimension extends Component {
chunk = this.add_chunk(block_chunk_x, block_chunk_z); chunk = this.add_chunk(block_chunk_x, block_chunk_z);
} }
const [nid, block_info] = EverythingRegistry.get_full<TileRegistry>("blocks", block.id)!; const [nid, block_info] = EverythingRegistry.get_full<BlockRegistry>("blocks", block.id)!;
const lx = block.x - block_chunk_x * CHUNK_SIZE; const lx = block.x - block_chunk_x * CHUNK_SIZE;
const lz = block.z - block_chunk_z * CHUNK_SIZE; const lz = block.z - block_chunk_z * CHUNK_SIZE;
+1 -1
View File
@@ -3,7 +3,7 @@ import { ClientWorld } from "./client_world.ts";
import { InputManager } from "./input_manager.ts"; import { InputManager } from "./input_manager.ts";
import { begin_drawing, end_drawing, init_font, init_window } from "./renderer/mod.ts"; import { begin_drawing, end_drawing, init_font, init_window } from "./renderer/mod.ts";
await import("./tiles/mod.ts"); await import("./blocks/mod.ts");
await import("./items/mod.ts"); await import("./items/mod.ts");
export class ClientLoop { export class ClientLoop {
+3 -3
View File
@@ -5,7 +5,7 @@ import { Camera, screen_to_world } from "../components/camera.ts";
import { InputManager } from "../input_manager.ts"; import { InputManager } from "../input_manager.ts";
import { canvas } from "../renderer/mod.ts"; import { canvas } from "../renderer/mod.ts";
import { TICK_DELTA, TILE_SIZE } from "$/common/constants.ts"; import { TICK_DELTA, TILE_SIZE } from "$/common/constants.ts";
import { EverythingRegistry, TileRegistry } from "$/common/everything_registry.ts"; import { BlockRegistry, EverythingRegistry } from "$/common/everything_registry.ts";
import { Position } from "$/common/components/position.ts"; import { Position } from "$/common/components/position.ts";
import { distance_point_rectangle } from "../../common/utils.ts"; import { distance_point_rectangle } from "../../common/utils.ts";
@@ -77,7 +77,7 @@ export class DimensionLogicSystem extends System {
handle_second(world: ClientWorld, dimension: Dimension) { handle_second(world: ClientWorld, dimension: Dimension) {
const tickables = dimension.blocks.filter((t) => t.tickable); const tickables = dimension.blocks.filter((t) => t.tickable);
for (const tickable of tickables) { for (const tickable of tickables) {
const tile_info = EverythingRegistry.get<TileRegistry>("blocks", tickable.id); const tile_info = EverythingRegistry.get<BlockRegistry>("blocks", tickable.id);
if (tile_info && tile_info.on_second) { if (tile_info && tile_info.on_second) {
tile_info.on_second(world, tickable, dimension.second_timer); tile_info.on_second(world, tickable, dimension.second_timer);
} }
@@ -88,7 +88,7 @@ export class DimensionLogicSystem extends System {
handle_tick(world: ClientWorld, dimension: Dimension) { handle_tick(world: ClientWorld, dimension: Dimension) {
const tickables = dimension.blocks.filter((t) => t.tickable); const tickables = dimension.blocks.filter((t) => t.tickable);
for (const tickable of tickables) { for (const tickable of tickables) {
const tile_info = EverythingRegistry.get<TileRegistry>("blocks", tickable.id); const tile_info = EverythingRegistry.get<BlockRegistry>("blocks", tickable.id);
if (tile_info && tile_info.on_tick) { if (tile_info && tile_info.on_tick) {
tile_info.on_tick(world, tickable, dimension.tick_timer); tile_info.on_tick(world, tickable, dimension.tick_timer);
} }
+7 -7
View File
@@ -1,7 +1,7 @@
import { get_sprite_region } from "$/common/utils.ts"; import { get_sprite_region } from "$/common/utils.ts";
import { Chunk, CHUNK_AREA, CHUNK_SIZE, Dimension } from "$/client/components/dimension.ts"; import { Chunk, CHUNK_AREA, CHUNK_SIZE, Dimension } from "$/client/components/dimension.ts";
import { TEXTURE_SIZE } from "$/common/constants.ts"; import { TEXTURE_SIZE } from "$/common/constants.ts";
import { EverythingRegistry, TileRegistry } from "$/common/everything_registry.ts"; import { BlockRegistry, EverythingRegistry } from "$/common/everything_registry.ts";
import { flush_buffer, gl, push_cube_to_mesh, set_current_texture } from "$/client/renderer/mod.ts"; import { flush_buffer, gl, push_cube_to_mesh, set_current_texture } from "$/client/renderer/mod.ts";
import { Camera } from "$/client/components/camera.ts"; import { Camera } from "$/client/components/camera.ts";
@@ -32,7 +32,7 @@ function render_chunk_opaque(chunk: Chunk) {
function make_chunk_mesh(chunk: Chunk, dimension: Dimension, camera: Camera) { function make_chunk_mesh(chunk: Chunk, dimension: Dimension, camera: Camera) {
let vertices = new Float32Array(CHUNK_AREA * 24 * 6 * 9); let vertices = new Float32Array(CHUNK_AREA * 24 * 6 * 9);
let count = 0; let count = 0;
const blocks_registry = EverythingRegistry.get_registry<TileRegistry>("blocks"); const blocks_registry = EverythingRegistry.get_registry<BlockRegistry>("blocks");
const show_face = (x: number, y: number, z: number) => { const show_face = (x: number, y: number, z: number) => {
const block = dimension.get_block(x, y, z); const block = dimension.get_block(x, y, z);
@@ -55,14 +55,14 @@ function make_chunk_mesh(chunk: Chunk, dimension: Dimension, camera: Camera) {
continue; continue;
} }
const tile_info = blocks_registry[block_nid]; const block_info = blocks_registry[block_nid];
let texture_id = "bworld:missing"; let texture_id = "bworld:missing";
if (tile_info?.texture_id) { if (block_info?.texture_id) {
if (typeof tile_info.texture_id === "string") { if (typeof block_info.texture_id === "string") {
texture_id = tile_info.texture_id; texture_id = block_info.texture_id;
} else { } else {
// texture_id = tile_info.texture_id(tile); // texture_id = block_info.texture_id(block);
} }
} }
-12
View File
@@ -1,12 +0,0 @@
import { EverythingRegistry, TileRegistry } from "$/common/everything_registry.ts";
EverythingRegistry.register<TileRegistry>("blocks", "bworld:log", {
texture_id: "bworld:log_side",
has_collision: true,
});
EverythingRegistry.register<TileRegistry>("blocks", "bworld:leaves", {
texture_id: "bworld:leaves",
has_collision: true,
transparent: true,
});
-6
View File
@@ -1,6 +0,0 @@
import { EverythingRegistry, TileRegistry } from "$/common/everything_registry.ts";
EverythingRegistry.register<TileRegistry>("blocks", "bworld:sand", {
texture_id: "bworld:sand",
has_collision: true,
});
-6
View File
@@ -1,6 +0,0 @@
import { EverythingRegistry, TileRegistry } from "$/common/everything_registry.ts";
EverythingRegistry.register<TileRegistry>("blocks", "bworld:snow", {
texture_id: "bworld:snow",
has_collision: true,
});
-6
View File
@@ -1,6 +0,0 @@
import { EverythingRegistry, TileRegistry } from "$/common/everything_registry.ts";
EverythingRegistry.register<TileRegistry>("blocks", "bworld:stone", {
texture_id: "bworld:stone",
has_collision: true,
});
-6
View File
@@ -1,6 +0,0 @@
import { EverythingRegistry, TileRegistry } from "$/common/everything_registry.ts";
EverythingRegistry.register<TileRegistry>("blocks", "bworld:water", {
texture_id: "bworld:water",
has_collision: false,
});
-1
View File
@@ -1,5 +1,4 @@
export const TEXTURE_SIZE = 16; export const TEXTURE_SIZE = 16;
export const TILE_SIZE = 48;
export const TICKS_PER_SECOND = 20; export const TICKS_PER_SECOND = 20;
export const TICK_DELTA = 1 / TICKS_PER_SECOND; export const TICK_DELTA = 1 / TICKS_PER_SECOND;
+7 -7
View File
@@ -49,16 +49,16 @@ export class EverythingRegistry {
} }
} }
export interface TileRegistry<T = unknown | undefined> { export interface BlockRegistry<T = unknown | undefined> {
texture_id: string | ((tile: Block<T>) => string); texture_id: string | ((block: Block<T>) => string);
has_collision: boolean; has_collision: boolean;
transparent?: boolean; transparent?: boolean;
on_create?(dimension: Dimension, tile: Block<T>): void; on_create?(dimension: Dimension, block: Block<T>): void;
on_click?(dimension: Dimension, tile: Block<T>): void; on_click?(dimension: Dimension, block: Block<T>): void;
on_interact?(dimension: Dimension, tile: Block<T>): void; on_interact?(dimension: Dimension, block: Block<T>): void;
on_tick?(dimension: Dimension, tile: Block<T>, tick_delta: number): void; on_tick?(dimension: Dimension, block: Block<T>, tick_delta: number): void;
on_second?(dimension: Dimension, tile: Block<T>, second_delta: number): void; on_second?(dimension: Dimension, block: Block<T>, second_delta: number): void;
} }
export interface ItemRegistry<T = unknown | undefined> { export interface ItemRegistry<T = unknown | undefined> {