Centered text
This commit is contained in:
@@ -794,8 +794,21 @@ fn registry_handle_global(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn registryHandleGlobalRemove(
|
||||||
|
data: ?*anyopaque,
|
||||||
|
registry: ?*c.wl_registry,
|
||||||
|
name: u32,
|
||||||
|
) callconv(.c) void {
|
||||||
|
// var wl_state: *WaylandState = @ptrCast(@alignCast(data));
|
||||||
|
_ = data;
|
||||||
|
_ = registry;
|
||||||
|
_ = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const registry_listener: c.wl_registry_listener = .{
|
const registry_listener: c.wl_registry_listener = .{
|
||||||
.global = registry_handle_global,
|
.global = registry_handle_global,
|
||||||
|
.global_remove = registryHandleGlobalRemove,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn main() u8 {
|
pub fn main() u8 {
|
||||||
|
|||||||
+27
-21
@@ -692,7 +692,9 @@ fn indexFont(font: Image, c: u8) V2 {
|
|||||||
|
|
||||||
fn drawString(buffer: platform.OffscreenBuffer, image: Image, pos: V2, str: []const u8) void {
|
fn drawString(buffer: platform.OffscreenBuffer, image: Image, pos: V2, str: []const u8) void {
|
||||||
var current_pos = pos;
|
var current_pos = pos;
|
||||||
const scale = 0.5;
|
const font_size = 32;
|
||||||
|
const scale = 0.25;
|
||||||
|
const font_width_scaled = scale * font_size;
|
||||||
for (str) |c| {
|
for (str) |c| {
|
||||||
const char_image_pos = indexFont(image, c);
|
const char_image_pos = indexFont(image, c);
|
||||||
|
|
||||||
@@ -700,17 +702,17 @@ fn drawString(buffer: platform.OffscreenBuffer, image: Image, pos: V2, str: []co
|
|||||||
const pos_y: i32 = @intFromFloat(char_image_pos.y);
|
const pos_y: i32 = @intFromFloat(char_image_pos.y);
|
||||||
const idx: usize = @intCast(pos_y * image.stride + (pos_x * image.components));
|
const idx: usize = @intCast(pos_y * image.stride + (pos_x * image.components));
|
||||||
const ptr = image.data.ptr + idx;
|
const ptr = image.data.ptr + idx;
|
||||||
const size: usize = @intCast(32 * image.stride);
|
const size: usize = @intCast(font_size * image.stride);
|
||||||
|
|
||||||
const char_image: Image = .{
|
const char_image: Image = .{
|
||||||
.width = 32,
|
.width = font_size,
|
||||||
.height = 32,
|
.height = font_size,
|
||||||
.stride = image.stride,
|
.stride = image.stride,
|
||||||
.components = image.components,
|
.components = image.components,
|
||||||
.data = ptr[0..size],
|
.data = ptr[0..size],
|
||||||
};
|
};
|
||||||
drawImage(buffer, char_image, current_pos, scale);
|
drawImage(buffer, char_image, current_pos, scale);
|
||||||
current_pos.x += 16;
|
current_pos.x += font_width_scaled;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -911,12 +913,18 @@ pub fn updateAndRender(memory: *platform.AppMemory, buffer: platform.OffscreenBu
|
|||||||
}
|
}
|
||||||
|
|
||||||
state.board = .{
|
state.board = .{
|
||||||
.pos = V2.zero,
|
.pos = mid,
|
||||||
.width = 7,
|
.width = 7,
|
||||||
.height = 7,
|
.height = 7,
|
||||||
.tile_size = V2.init(64, 64),
|
.tile_size = V2.init(32, 32),
|
||||||
.tiles = tiles,
|
.tiles = tiles,
|
||||||
};
|
};
|
||||||
|
const board_size = V2.initI32(
|
||||||
|
@intCast(state.board.width * TILE_SIZE),
|
||||||
|
@intCast(state.board.height * TILE_SIZE),
|
||||||
|
);
|
||||||
|
const half = board_size.mul(0.5);
|
||||||
|
state.board.pos = state.board.pos.sub(half);
|
||||||
|
|
||||||
memory.initialized = true;
|
memory.initialized = true;
|
||||||
}
|
}
|
||||||
@@ -1035,29 +1043,21 @@ pub fn updateAndRender(memory: *platform.AppMemory, buffer: platform.OffscreenBu
|
|||||||
// Render
|
// Render
|
||||||
fillRect(buffer, 0, 0, buffer.width, buffer.height, 0xFFFFFFFF);
|
fillRect(buffer, 0, 0, buffer.width, buffer.height, 0xFFFFFFFF);
|
||||||
|
|
||||||
// {
|
|
||||||
// const camera_pos = V2.init(20.0, 20.0).add(state.camera.pos);
|
|
||||||
// drawImage(buffer, state.font_image, camera_pos, 1.0);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Draw board
|
// Draw board
|
||||||
{
|
{
|
||||||
const board = state.board;
|
const board = state.board;
|
||||||
// const board_size = V2.init_int(
|
|
||||||
// @intCast(board.width * TILE_SIZE),
|
|
||||||
// @intCast(board.height * TILE_SIZE),
|
|
||||||
// );
|
|
||||||
// const half = board_size.mul(0.5);
|
|
||||||
|
|
||||||
for (board.tiles, 0..) |row, i| {
|
for (board.tiles, 0..) |row, i| {
|
||||||
for (row, 0..) |tile, j| {
|
for (row, 0..) |tile, j| {
|
||||||
const tile_pos = board.getTilePos(i, j);
|
const tile_pos = board.getTilePos(i, j);
|
||||||
const camera_pos = tile_pos.add(state.camera.pos);
|
|
||||||
const pos_x: i32 = @intFromFloat(camera_pos.x);
|
|
||||||
const pos_y: i32 = @intFromFloat(camera_pos.y);
|
|
||||||
const width: i32 = @intFromFloat(board.tile_size.x);
|
const width: i32 = @intFromFloat(board.tile_size.x);
|
||||||
const height: i32 = @intFromFloat(board.tile_size.y);
|
const height: i32 = @intFromFloat(board.tile_size.y);
|
||||||
|
|
||||||
|
const str_width = @divFloor(32 * tile.label.len, 4);
|
||||||
|
const str_height = @divFloor(32, 4);
|
||||||
|
const str_size = V2.initUSize(str_width, str_height);
|
||||||
|
const string_pos = tile_pos.add(board.tile_size.mul(0.5)).sub(str_size.mul(0.5));
|
||||||
|
|
||||||
var color: u32 = 0xFF000000;
|
var color: u32 = 0xFF000000;
|
||||||
if (tile.blocked) {
|
if (tile.blocked) {
|
||||||
color = 0xFFFFFFFF;
|
color = 0xFFFFFFFF;
|
||||||
@@ -1065,9 +1065,15 @@ pub fn updateAndRender(memory: *platform.AppMemory, buffer: platform.OffscreenBu
|
|||||||
color = 0xFF00FF00;
|
color = 0xFF00FF00;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const camera_pos = tile_pos.add(state.camera.pos);
|
||||||
|
const pos_x: i32 = @intFromFloat(camera_pos.x);
|
||||||
|
const pos_y: i32 = @intFromFloat(camera_pos.y);
|
||||||
|
|
||||||
fillRect(buffer, pos_x, pos_y, width, height, color);
|
fillRect(buffer, pos_x, pos_y, width, height, color);
|
||||||
drawRect(buffer, camera_pos, board.tile_size, 0xFFFFFFFF, 2);
|
drawRect(buffer, camera_pos, board.tile_size, 0xFFFFFFFF, 2);
|
||||||
drawString(buffer, state.font_image, camera_pos, tile.label);
|
|
||||||
|
const string_camera_pos = string_pos.add(state.camera.pos);
|
||||||
|
drawString(buffer, state.font_image, string_camera_pos, tile.label);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user