1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- const std = @import("std");
- const utils = @import("utils.zig");
- const Imports = struct {
- extern fn jsConsoleLogWrite(ptr: [*]const u8, len: usize) void;
- extern fn jsConsoleLogFlush() void;
- extern fn jsRandom() f32;
- extern fn jsClearRectangle(x: f32, y: f32, width: f32, height: f32) void;
- extern fn jsDrawCircle(x: f32, y: f32, radius: f32, r: u8, g: u8, b: u8, a: f32) void;
- extern fn jsDrawRectangle(x: f32, y: f32, width: f32, height: f32, r: u8, g: u8, b: u8, a: f32) void;
- extern fn jsUpdateScore(score: u32) void;
- };
- const Ball2D = utils.Ball2D;
- const RGBColor = utils.RGBColor;
- const Vector2D = utils.Vector2D;
- pub inline fn random() f32 {
- return Imports.jsRandom();
- }
- pub inline fn clearRectangle(pos: Vector2D, width: f32, height: f32) void {
- Imports.jsClearRectangle(pos.x, pos.y, width, height);
- }
- pub inline fn drawBall2D(ball: Ball2D) void {
- const p = ball.pos;
- const r = ball.radius;
- const c = ball.color;
- Imports.jsDrawCircle(p.x, p.y, r, c.r, c.g, c.b, c.a);
- }
- pub inline fn drawRectangle(pos: Vector2D, width: f32, height: f32, color: RGBColor) void {
- Imports.jsDrawRectangle(pos.x, pos.y, width, height, color.r, color.g, color.b, color.a);
- }
- pub inline fn updateScore(score: u32) void {
- Imports.jsUpdateScore(score);
- }
- pub const Console = struct {
- pub const Logger = struct {
- pub const Error = error{};
- pub const Writer = std.io.Writer(void, Error, write);
- fn write(_: void, bytes: []const u8) Error!usize {
- Imports.jsConsoleLogWrite(bytes.ptr, bytes.len);
- return bytes.len;
- }
- };
- const logger = Logger.Writer{ .context = {} };
- pub fn log(comptime format: []const u8, args: anytype) void {
- logger.print(format, args) catch return;
- Imports.jsConsoleLogFlush();
- }
- };
|