diff --git a/assets/maps/map.json b/assets/maps/map.json index fae0143..9e6e22a 100644 --- a/assets/maps/map.json +++ b/assets/maps/map.json @@ -107,6 +107,12 @@ "x":16, "y":0 }], + "properties":[ + { + "name":"divisions", + "type":"int", + "value":5 + }], "rotation":0, "type":"wire", "visible":true, diff --git a/assets/maps/map.tmx b/assets/maps/map.tmx index 81b3729..a36353d 100644 --- a/assets/maps/map.tmx +++ b/assets/maps/map.tmx @@ -148,6 +148,9 @@ + + + diff --git a/assets/maps/map.zig b/assets/maps/map.zig index 9f64f21..5fb3570 100644 --- a/assets/maps/map.zig +++ b/assets/maps/map.zig @@ -1,14 +1,50 @@ const std = @import("std"); -const Vec2 = std.meta.Vector(2,i32); -const AABB = struct {pos: Vec2, size: Vec2}; -const Wire = struct { p1: Vec2, p2: Vec2, a1: bool, a2: bool }; +const Vec2 = std.meta.Vector(2, i32); +const AABB = struct { pos: Vec2, size: Vec2 }; +const Wire = struct { p1: Vec2, p2: Vec2, a1: bool, a2: bool, divisions: u8 }; pub const solid_size: Vec2 = Vec2{ 60, 60 }; pub const solid: [3600]u8 = .{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 0, 0, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 0, 0, 0, 0, 54, 54, 54, 54, 0, 54, 54, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 51, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 3, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 50, 19, 19, 19, 19, 54, 54, 54, 54, 54, 54, 54, 54, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 50, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 50, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 54, 54, 54, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 52, 0, 0, 0, 37, 0, 0, 0, 0, 0, 39, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 22, 22, 22, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 50, 54, 54, 54, 54, 0, 54, 0, 0, 54, 54, 54, 54, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 20, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 54, 54, 54, 52, 0, 0, 0, 0, 0, 50, 19, 34, 0, 0, 51, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 37, 0, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 0, 0, 0, 50, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 53, 0, 54, 54, 54, 54, 54, 0, 0, 0, 0, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 0, 0, 0, 39, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 22, 22, 22, 22, 22, 22, 52, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 50, 65, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 51, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 0, 0, 0, 0, 0, 37, 54, 54, 54, 54, 54, 54, 54, 39, 0, 0, 0, 50, 0, 0, 0, 0, 52, 0, 0, 0, 4, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 50, 36, 0, 54, 54, 54, 54, 0, 0, 54, 54, 54, 54, 0, 0, 0, 39, 0, 0, 0, 50, 19, 34, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 68, 55, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 52, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 50, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 0, 36, 52, 0, 0, 0, 37, 39, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 37, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 37, 39, 0, 0, 0, 0, 33, 19, 52, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 39, 0, 0, 0, 50, 54, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 19, 19, 52, 4, 17, 19, 19, 19, 19, 19, 52, 4, 21, 22, 22, 22, 22, 0, 0, 0, 0, 39, 0, 0, 0, 0, 21, 22, 22, 22, 22, 19, 19, 19, 19, 19, 22, 22, 0, 39, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 36, 0, 0, 39, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 50, 54, 54, 54, 54, 55, 0, 0, 0, 0, 0, 37, 0, 0, 0, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 54, 54, 54, 0, 54, 54, 54, 54, 0, 0, 36, 52, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 50, 67, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 65, 52, 0, 0, 21, 22, 0, 0, 0, 0, 39, 0, 0, 0, 20, 0, 0, 0, 0, 37, 0, 39, 0, 0, 0, 0, 37, 0, 0, 39, 0, 0, 0, 0, 33, 19, 19, 19, 19, 19, 19, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 37, 0, 0, 0, 0, 0, 39, 0, 0, 0, 53, 19, 52, 0, 0, 37, 0, 39, 0, 0, 0, 50, 36, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 21, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 39, 0, 0, 0, 0, 53, 54, 54, 0, 0, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 37, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 50, 54, 54, 66, 52, 0, 0, 0, 0, 0, 49, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 66, 52, 4, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 35, 51, 35, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; pub const conduit_size: Vec2 = Vec2{ 60, 60 }; pub const conduit: [3600]u8 = .{ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 26, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 60, 26, 26, 26, 26, 72, 60, 26, 26, 26, 26, 26, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 47, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 60, 26, 26, 26, 26, 26, 72, 26, 26, 26, 26, 26, 26, 26, 25, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 24, 60, 26, 26, 26, 26, 25, 0, 0, 27, 0, 0, 47, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 40, 46, 0, 0, 0, 0, 45, 0, 0, 27, 0, 0, 47, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 60, 26, 26, 26, 26, 26, 26, 26, 26, 25, 0, 0, 0, 44, 27, 44, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 24, 60, 25, 0, 0, 27, 27, 27, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 27, 24, 26, 60, 41, 27, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 31, 41, 0, 24, 26, 41, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 27, 0, 0, 27, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 27, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 26, 26, 26, 26, 26, 26, 26, 26, 73, 26, 73, 26, 26, 26, 26, 26, 26, 26, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 25, 0, 0, 0, 0, 0, 0, 0, 72, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 72, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 25, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 45, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 26, 26, 26, 26, 26, 46, 0, 0, 0, 44, 0, 27, 0, 44, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 24, 26, 26, 73, 26, 74, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 26, 26, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 24, 26, 26, 26, 26, 60, 26, 26, 26, 26, 26, 25, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 26, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 26, 26, 26, 26, 27, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 40, 26, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 24, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 24, 26, 26, 26, 25, 0, 0, 0, 0, 0, 0, 0, 0, 40, 26, 46, 0, 47, 41, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 24, 26, 60, 26, 25, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 26, 26, 26, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 27, 0, 0, 0, 27, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 29, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 26, 72, 26, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; pub const spawn: Vec2 = Vec2{ 1, 58 }; -pub const wire: [10]Wire = [_]Wire{.{.a1 = true, .a2 = false,.p1 = Vec2{ 84, 396 },.p2 = Vec2{ 50, 414 },}, .{.a1 = true, .a2 = true,.p1 = Vec2{ 20, 436 },.p2 = Vec2{ 36, 436 },}, .{.a1 = true, .a2 = false,.p1 = Vec2{ 228, 380 },.p2 = Vec2{ 268, 398 },}, .{.a1 = false, .a2 = true,.p1 = Vec2{ 380, 236 },.p2 = Vec2{ 468, 236 },}, .{.a1 = true, .a2 = false,.p1 = Vec2{ 468, 228 },.p2 = Vec2{ 420, 236 },}, .{.a1 = false, .a2 = true,.p1 = Vec2{ 372, 204 },.p2 = Vec2{ 468, 204 },}, .{.a1 = true, .a2 = true,.p1 = Vec2{ 452, 268 },.p2 = Vec2{ 436, 268 },}, .{.a1 = false, .a2 = true,.p1 = Vec2{ 444, 396 },.p2 = Vec2{ 468, 388 },}, .{.a1 = false, .a2 = true,.p1 = Vec2{ 444, 396 },.p2 = Vec2{ 380, 388 },}, .{.a1 = true, .a2 = true,.p1 = Vec2{ 436, 340 },.p2 = Vec2{ 468, 332 },}, }; -pub const doors: [10]Vec2 = [_]Vec2{Vec2{ 10, 58 },Vec2{ 5, 51 },Vec2{ 24, 50 },Vec2{ 32, 50 },Vec2{ 33, 42 },Vec2{ 47, 22 },Vec2{ 54, 38 },Vec2{ 51, 56 },Vec2{ 47, 45 },Vec2{ 42, 57 },}; -pub const coins: [8]Vec2 = [_]Vec2{Vec2{ 27, 52 },Vec2{ 32, 58 },Vec2{ 49, 22 },Vec2{ 15, 58 },Vec2{ 2, 51 },Vec2{ 57, 38 },Vec2{ 50, 52 },Vec2{ 48, 45 },}; -pub const sources: [4]Vec2 = [_]Vec2{Vec2{ 0, 41 },Vec2{ 59, 39 },Vec2{ 47, 59 },Vec2{ 59, 50 },}; +pub const wire: [10]Wire = [_]Wire{ + .{ .a1 = true, .a2 = false, .divisions = 6, .p1 = Vec2{ 84, 396 }, .p2 = Vec2{ 50, 414 } }, + .{ .a1 = true, .a2 = true, .divisions = 5, .p1 = Vec2{ 20, 436 }, .p2 = Vec2{ 36, 436 } }, + .{ .a1 = true, .a2 = false, .divisions = 7, .p1 = Vec2{ 228, 380 }, .p2 = Vec2{ 268, 398 } }, + .{ .a1 = false, .a2 = true, .divisions = 14, .p1 = Vec2{ 380, 236 }, .p2 = Vec2{ 468, 236 } }, + .{ .a1 = true, .a2 = false, .divisions = 8, .p1 = Vec2{ 468, 228 }, .p2 = Vec2{ 420, 236 } }, + .{ .a1 = false, .a2 = true, .divisions = 16, .p1 = Vec2{ 372, 204 }, .p2 = Vec2{ 468, 204 } }, + .{ .a1 = true, .a2 = true, .divisions = 2, .p1 = Vec2{ 452, 268 }, .p2 = Vec2{ 436, 268 } }, + .{ .a1 = false, .a2 = true, .divisions = 4, .p1 = Vec2{ 444, 396 }, .p2 = Vec2{ 468, 388 } }, + .{ .a1 = false, .a2 = true, .divisions = 10, .p1 = Vec2{ 444, 396 }, .p2 = Vec2{ 380, 388 } }, + .{ .a1 = true, .a2 = true, .divisions = 5, .p1 = Vec2{ 436, 340 }, .p2 = Vec2{ 468, 332 } }, +}; +pub const doors: [10]Vec2 = [_]Vec2{ + Vec2{ 10, 58 }, + Vec2{ 5, 51 }, + Vec2{ 24, 50 }, + Vec2{ 32, 50 }, + Vec2{ 33, 42 }, + Vec2{ 47, 22 }, + Vec2{ 54, 38 }, + Vec2{ 51, 56 }, + Vec2{ 47, 45 }, + Vec2{ 42, 57 }, +}; +pub const coins: [8]Vec2 = [_]Vec2{ + Vec2{ 27, 52 }, + Vec2{ 32, 58 }, + Vec2{ 49, 22 }, + Vec2{ 15, 58 }, + Vec2{ 2, 51 }, + Vec2{ 57, 38 }, + Vec2{ 50, 52 }, + Vec2{ 48, 45 }, +}; +pub const sources: [4]Vec2 = [_]Vec2{ + Vec2{ 0, 41 }, + Vec2{ 59, 39 }, + Vec2{ 47, 59 }, + Vec2{ 59, 50 }, +}; pub const focus: [0]AABB = [_]AABB{}; diff --git a/assets/tiles.zig b/assets/tiles.zig index 75e80b7..29099d2 100644 --- a/assets/tiles.zig +++ b/assets/tiles.zig @@ -2,5 +2,5 @@ pub const tiles_width = 128; pub const tiles_height = 64; pub const tiles_flags = 1; // BLIT_2BPP -pub const tiles = [2048]u8{ 0x00,0x00,0x15,0x54,0x40,0x01,0x55,0x55,0x05,0x50,0x01,0x40,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x59,0x65,0x40,0x01,0x50,0x05,0x1a,0xa4,0x06,0x90,0x01,0x40,0x41,0x41,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x41,0x41,0x01,0x40,0x00,0x00,0x59,0x65,0x40,0x01,0x44,0x11,0x69,0x69,0x19,0xa4,0x01,0x40,0x11,0x44,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x15,0x54,0x01,0x40,0x00,0x00,0x59,0x65,0x40,0x01,0x41,0x41,0x6a,0x69,0x19,0xa4,0x01,0x40,0x05,0x50,0x05,0x50,0x05,0x50,0x15,0x54,0x05,0x50,0x05,0x50,0x15,0x54,0x05,0x50,0x05,0x55,0x00,0x00,0x59,0x65,0x40,0x11,0x41,0x41,0x6a,0x69,0x19,0xa4,0x01,0x40,0x05,0x50,0x15,0x54,0x15,0x54,0x45,0x51,0x15,0x54,0x05,0x50,0x45,0x51,0x05,0x54,0x05,0x50,0x00,0x00,0x55,0x55,0x40,0x01,0x44,0x11,0x69,0x69,0x19,0xa4,0x01,0x40,0x05,0x50,0x15,0x54,0x45,0x51,0x05,0x50,0x45,0x51,0x05,0x50,0x05,0x54,0x04,0x04,0x05,0x54,0x00,0x00,0x59,0x65,0x40,0x01,0x50,0x05,0x1a,0xa4,0x06,0x90,0x01,0x40,0x04,0x10,0x04,0x10,0x01,0x40,0x01,0x40,0x01,0x50,0x04,0x10,0x04,0x04,0x04,0x00,0x01,0x01,0x00,0x00,0x15,0x54,0x40,0x01,0x55,0x55,0x05,0x50,0x01,0x40,0x01,0x40,0x04,0x10,0x04,0x10,0x00,0x40,0x01,0x40,0x01,0x00,0x04,0x10,0x04,0x00,0x00,0x00,0x00,0x40,0x15,0x55,0x55,0x54,0x55,0x55,0x40,0x01,0x15,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x00,0x00,0x54,0x01,0x15,0x11,0x14,0x04,0x50,0x05,0x54,0x01,0x10,0x11,0x15,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x02,0x88,0x02,0x80,0x22,0x80,0x02,0x80,0x00,0x00,0x40,0x10,0x00,0x01,0x00,0x00,0x40,0x11,0x40,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x02,0x88,0x02,0x80,0x22,0x80,0x02,0x80,0x00,0x00,0x40,0x00,0x04,0x05,0x04,0x00,0x40,0x01,0x40,0x00,0x04,0x00,0x04,0x05,0x00,0xaa,0xaa,0x00,0xaa,0xaa,0x02,0x80,0xaa,0xa0,0xaa,0xa0,0x0a,0xaa,0x0a,0xaa,0x00,0x00,0x40,0x00,0x00,0x01,0x00,0x00,0x40,0x01,0x40,0x00,0x00,0x00,0x00,0x01,0x02,0xaa,0xaa,0x80,0xaa,0xaa,0x02,0x80,0xaa,0xa0,0xaa,0xa0,0x0a,0xaa,0x0a,0xaa,0x00,0x00,0x51,0x00,0x00,0x41,0x00,0x10,0x51,0x05,0x50,0x00,0x00,0x00,0x00,0x41,0x02,0x80,0x02,0x80,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x88,0x02,0x80,0x22,0x80,0x00,0x00,0x50,0x00,0x00,0x05,0x04,0x04,0x50,0x01,0x50,0x00,0x00,0x00,0x00,0x05,0x02,0x80,0x02,0x80,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x88,0x02,0x80,0x22,0x80,0x00,0x00,0x40,0x01,0x40,0x01,0x55,0x55,0x40,0x01,0x40,0x00,0x00,0x00,0x00,0x01,0x02,0x80,0x02,0x80,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x00,0x00,0x44,0x01,0x40,0x01,0x15,0x54,0x40,0x01,0x40,0x00,0x00,0x00,0x00,0x01,0x02,0x80,0x02,0x80,0x08,0x20,0x02,0x80,0x00,0x00,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x05,0x44,0x05,0x00,0x50,0x40,0x00,0x00,0x00,0x00,0x05,0x02,0x80,0x02,0x80,0x0a,0xa0,0x02,0x80,0x00,0x00,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x05,0x40,0x05,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x05,0x02,0x80,0x02,0x80,0xa2,0x8a,0x02,0x80,0x08,0x20,0x0a,0xa0,0x0a,0xa0,0x0a,0xa0,0x00,0x00,0x50,0x00,0x00,0x41,0x40,0x41,0x10,0x00,0x40,0x00,0x00,0x00,0x00,0x01,0x02,0xaa,0xaa,0x80,0x2a,0xa8,0xaa,0xaa,0x0a,0xa0,0x0a,0xa0,0xaa,0x80,0x02,0xaa,0x00,0x00,0x40,0x40,0x10,0x01,0x50,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x41,0x00,0xaa,0xaa,0x00,0x2a,0xa8,0xaa,0xaa,0x0a,0xa0,0x0a,0xa0,0xaa,0x80,0x02,0xaa,0x00,0x00,0x40,0x00,0x00,0x01,0x40,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0xa2,0x8a,0x02,0x80,0x0a,0xa0,0x08,0x20,0x0a,0xa0,0x0a,0xa0,0x00,0x00,0x51,0x01,0x11,0x15,0x50,0x11,0x00,0x10,0x50,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x0a,0xa0,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x55,0x54,0x15,0x54,0x40,0x01,0x50,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x08,0x20,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x54,0x15,0x55,0x44,0x01,0x55,0x54,0x44,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x54,0x05,0x55,0x10,0x40,0x01,0x14,0x05,0x40,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x0a,0xa0,0x0a,0xa0,0x0a,0xa0,0x00,0x00,0x00,0x00,0x40,0x11,0x40,0x00,0x50,0x05,0x00,0x05,0x50,0x00,0x00,0x00,0x00,0x05,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x0a,0xa0,0x29,0x68,0x0a,0x60,0x00,0x00,0x00,0x00,0x40,0x01,0x44,0x04,0x50,0x01,0x00,0x41,0x50,0x00,0x00,0x00,0x00,0x41,0x0a,0xa0,0x0a,0xaa,0x0a,0xa0,0xaa,0xa0,0xaa,0x6a,0x29,0x68,0xa9,0x6a,0x00,0x00,0x00,0x00,0x40,0x01,0x40,0x00,0x40,0x41,0x10,0x01,0x40,0x00,0x01,0x00,0x10,0x01,0x0a,0xa0,0x0a,0xaa,0x0a,0xa0,0xaa,0xa0,0xa9,0x5a,0x2a,0xa8,0xa6,0x9a,0x00,0x00,0x00,0x00,0x51,0x05,0x40,0x00,0x40,0x01,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x01,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x0a,0x60,0x29,0x68,0x0a,0xa0,0x00,0x00,0x00,0x00,0x50,0x01,0x41,0x04,0x51,0x05,0x11,0x15,0x51,0x01,0x14,0x11,0x11,0x15,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0xa0,0x0a,0xa0,0x0a,0xa0,0x00,0x00,0x00,0x00,0x40,0x01,0x15,0x55,0x15,0x54,0x55,0x54,0x15,0x55,0x55,0x55,0x55,0x54,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0x40,0x01,0x40,0x01,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x51,0x40,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x01,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0x80,0x02,0xaa,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0x80,0x02,0xaa,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x11,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x55,0x55,0x40,0x01,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; +pub const tiles = [2048]u8{ 0x00,0x00,0x15,0x54,0x40,0x01,0x55,0x55,0x05,0x50,0x01,0x40,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x59,0x65,0x40,0x01,0x50,0x05,0x1a,0xa4,0x06,0x90,0x01,0x40,0x41,0x41,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x41,0x41,0x01,0x40,0x00,0x00,0x59,0x65,0x40,0x01,0x44,0x11,0x69,0x69,0x19,0xa4,0x01,0x40,0x11,0x44,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x15,0x54,0x01,0x40,0x00,0x00,0x59,0x65,0x40,0x01,0x41,0x41,0x6a,0x69,0x19,0xa4,0x01,0x40,0x05,0x50,0x05,0x50,0x05,0x50,0x15,0x54,0x05,0x50,0x05,0x50,0x15,0x54,0x05,0x50,0x05,0x55,0x00,0x00,0x59,0x65,0x40,0x11,0x41,0x41,0x6a,0x69,0x19,0xa4,0x01,0x40,0x05,0x50,0x15,0x54,0x15,0x54,0x45,0x51,0x15,0x54,0x05,0x50,0x45,0x51,0x05,0x54,0x05,0x50,0x00,0x00,0x55,0x55,0x40,0x01,0x44,0x11,0x69,0x69,0x19,0xa4,0x01,0x40,0x05,0x50,0x15,0x54,0x45,0x51,0x05,0x50,0x45,0x51,0x05,0x50,0x05,0x54,0x04,0x04,0x05,0x54,0x00,0x00,0x59,0x65,0x40,0x01,0x50,0x05,0x1a,0xa4,0x06,0x90,0x01,0x40,0x04,0x10,0x04,0x10,0x01,0x40,0x01,0x40,0x01,0x50,0x04,0x10,0x04,0x04,0x04,0x00,0x01,0x01,0x00,0x00,0x15,0x54,0x40,0x01,0x55,0x55,0x05,0x50,0x01,0x40,0x01,0x40,0x04,0x10,0x04,0x10,0x00,0x40,0x01,0x40,0x01,0x00,0x04,0x10,0x04,0x00,0x00,0x00,0x00,0x40,0x15,0x55,0x55,0x54,0x55,0x55,0x40,0x01,0x15,0x55,0x55,0x55,0x55,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x00,0x00,0x54,0x01,0x15,0x11,0x14,0x04,0x50,0x05,0x54,0x01,0x10,0x11,0x15,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x02,0x88,0x02,0x80,0x22,0x80,0x02,0x80,0x00,0x00,0x40,0x10,0x00,0x01,0x00,0x00,0x40,0x11,0x40,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x02,0x88,0x02,0x80,0x22,0x80,0x02,0x80,0x00,0x00,0x40,0x00,0x04,0x05,0x04,0x00,0x40,0x01,0x40,0x00,0x04,0x00,0x04,0x05,0x00,0xaa,0xaa,0x00,0xaa,0xaa,0x02,0x80,0xaa,0xa0,0xaa,0xa0,0x0a,0xaa,0x0a,0xaa,0x00,0x00,0x40,0x00,0x00,0x01,0x00,0x00,0x40,0x01,0x40,0x00,0x00,0x00,0x00,0x01,0x02,0xaa,0xaa,0x80,0xaa,0xaa,0x02,0x80,0xaa,0xa0,0xaa,0xa0,0x0a,0xaa,0x0a,0xaa,0x00,0x00,0x51,0x00,0x00,0x41,0x00,0x10,0x51,0x05,0x50,0x00,0x00,0x00,0x00,0x41,0x02,0x80,0x02,0x80,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x88,0x02,0x80,0x22,0x80,0x00,0x00,0x50,0x00,0x00,0x05,0x04,0x04,0x50,0x01,0x50,0x00,0x00,0x00,0x00,0x05,0x02,0x80,0x02,0x80,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x88,0x02,0x80,0x22,0x80,0x00,0x00,0x40,0x01,0x40,0x01,0x55,0x55,0x40,0x01,0x40,0x00,0x00,0x00,0x00,0x01,0x02,0x80,0x02,0x80,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x00,0x00,0x44,0x01,0x40,0x01,0x15,0x54,0x40,0x01,0x40,0x00,0x00,0x00,0x00,0x01,0x02,0x80,0x02,0x80,0x08,0x20,0x02,0x80,0x00,0x00,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x05,0x44,0x05,0x00,0x50,0x40,0x00,0x00,0x00,0x00,0x05,0x02,0x80,0x02,0x80,0x0a,0xa0,0x02,0x80,0x00,0x00,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x05,0x40,0x05,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x05,0x02,0x80,0x02,0x80,0xa2,0x8a,0x02,0x80,0x08,0x20,0x0a,0xa0,0x0a,0xa0,0x0a,0xa0,0x00,0x00,0x50,0x00,0x00,0x41,0x40,0x41,0x10,0x00,0x40,0x00,0x00,0x00,0x00,0x01,0x02,0xaa,0xaa,0x80,0x2a,0xa8,0xaa,0xaa,0x0a,0xa0,0x0a,0xa0,0xaa,0x80,0x02,0xaa,0x00,0x00,0x40,0x40,0x10,0x01,0x50,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x41,0x00,0xaa,0xaa,0x00,0x2a,0xa8,0xaa,0xaa,0x0a,0xa0,0x0a,0xa0,0xaa,0x80,0x02,0xaa,0x00,0x00,0x40,0x00,0x00,0x01,0x40,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0xa2,0x8a,0x02,0x80,0x0a,0xa0,0x08,0x20,0x0a,0xa0,0x0a,0xa0,0x00,0x00,0x51,0x01,0x11,0x15,0x50,0x11,0x00,0x10,0x50,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x0a,0xa0,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x55,0x55,0x54,0x15,0x54,0x40,0x01,0x50,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x08,0x20,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x54,0x15,0x55,0x44,0x01,0x55,0x54,0x44,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x00,0x00,0x54,0x05,0x55,0x10,0x40,0x01,0x14,0x05,0x40,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x0a,0xa0,0x0a,0xa0,0x0a,0xa0,0x02,0x80,0x00,0x00,0x40,0x11,0x40,0x00,0x50,0x05,0x00,0x05,0x50,0x00,0x00,0x00,0x00,0x05,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x0a,0xa0,0x29,0x68,0x0a,0x60,0x0a,0xa0,0x00,0x00,0x40,0x01,0x44,0x04,0x50,0x01,0x00,0x41,0x50,0x00,0x00,0x00,0x00,0x41,0x0a,0xa0,0x0a,0xaa,0x0a,0xa0,0xaa,0xa0,0xaa,0x6a,0x29,0x68,0xa9,0x6a,0x0a,0xa0,0x00,0x00,0x40,0x01,0x40,0x00,0x40,0x41,0x10,0x01,0x40,0x00,0x01,0x00,0x10,0x01,0x0a,0xa0,0x0a,0xaa,0x0a,0xa0,0xaa,0xa0,0xa9,0x5a,0x2a,0xa8,0xa6,0x9a,0x2a,0xa8,0x00,0x00,0x51,0x05,0x40,0x00,0x40,0x01,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x01,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x0a,0x60,0x29,0x68,0x0a,0xa0,0x2a,0xa8,0x00,0x00,0x50,0x01,0x41,0x04,0x51,0x05,0x11,0x15,0x51,0x01,0x14,0x11,0x11,0x15,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0xa0,0x0a,0xa0,0x0a,0xa0,0x2a,0xa8,0x00,0x00,0x40,0x01,0x15,0x55,0x15,0x54,0x55,0x54,0x15,0x55,0x55,0x55,0x55,0x54,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x02,0x80,0x00,0x00,0x55,0x55,0x40,0x01,0x40,0x01,0x40,0x01,0x69,0x69,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x51,0x40,0x50,0xaa,0xaa,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0xaa,0xaa,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x01,0x50,0x00,0x6a,0xa9,0x00,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0x80,0x02,0xaa,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x6a,0xa9,0x00,0x00,0x00,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0x80,0x02,0xaa,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0xaa,0xaa,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x11,0x40,0x10,0xaa,0xaa,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x55,0x55,0x40,0x01,0x40,0x01,0x69,0x69,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x02,0x80,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/map2src.zig b/map2src.zig index 45daee4..e06d9a1 100644 --- a/map2src.zig +++ b/map2src.zig @@ -1,10 +1,10 @@ const std = @import("std"); -const PropertyType = enum { @"bool" }; +const PropertyType = enum { @"bool", @"int" }; const Property = struct { name: []const u8 = &.{}, @"type": PropertyType = .@"bool", - value: union(PropertyType) { @"bool": bool }, + value: union(PropertyType) { @"bool": bool, @"int": i64 }, }; const Point = struct { @@ -110,7 +110,7 @@ pub fn do() !void { try outlist.appendSlice("const std = @import(\"std\");\n"); try outlist.appendSlice("const Vec2 = std.meta.Vector(2,i32);\n"); try outlist.appendSlice("const AABB = struct {pos: Vec2, size: Vec2};\n"); - try outlist.appendSlice("const Wire = struct { p1: Vec2, p2: Vec2, a1: bool, a2: bool };\n"); + try outlist.appendSlice("const Wire = struct { p1: Vec2, p2: Vec2, a1: bool, a2: bool, divisions: u8 };\n"); var outbuffer: [16 * KB]u8 = undefined; for (map.layers) |layer| { @@ -163,26 +163,42 @@ pub fn do() !void { } } +pub fn length(vec: std.meta.Vector(2, i64)) i64 { + var squared = vec * vec; + return @intCast(i64, std.math.sqrt(@intCast(u64, @reduce(.Add, squared)))); +} + pub fn appendWires(outlist: *std.ArrayList(u8), wirelist: std.ArrayList(Object)) !void { var outbuffer: [4 * KB]u8 = undefined; var outcontent = try std.fmt.bufPrint(&outbuffer, "pub const wire: [{}]Wire = [_]Wire{{", .{wirelist.items.len}); try outlist.appendSlice(outcontent); for (wirelist.items) |obj| { - try outlist.appendSlice(".{"); var a1 = true; var a2 = true; + var p1: std.meta.Vector(2, i64) = .{ 0, 0 }; + var p2: std.meta.Vector(2, i64) = .{ 0, 0 }; + var divisions: ?i64 = null; for (obj.properties) |p| { if (std.mem.eql(u8, p.name, "anchor1")) a1 = p.value.@"bool"; if (std.mem.eql(u8, p.name, "anchor2")) a2 = p.value.@"bool"; + if (std.mem.eql(u8, p.name, "divisions")) divisions = p.value.@"int"; } - var of = try std.fmt.bufPrint(&outbuffer, ".a1 = {}, .a2 = {},", .{ a1, a2 }); - try outlist.appendSlice(of); for (obj.polyline) |point, i| { - var pointf = try std.fmt.bufPrint(&outbuffer, ".p{} = Vec2{{ {}, {} }},", .{ i + 1, @floatToInt(i32, obj.x + point.x), @floatToInt(i32, obj.y + point.y) }); - try outlist.appendSlice(pointf); + switch (i) { + 0 => p1 = .{ @floatToInt(i64, obj.x + point.x), @floatToInt(i64, obj.y + point.y) }, + 1 => p2 = .{ @floatToInt(i64, obj.x + point.x), @floatToInt(i64, obj.y + point.y) }, + else => return error.TooManyPoints, + } } - try outlist.appendSlice("}, "); + divisions = divisions orelse std.math.max(2, @divTrunc(length(p2 - p1), 6)); + + var of = try std.fmt.bufPrint( + &outbuffer, + ".{{ .a1 = {}, .a2 = {}, .divisions = {}, .p1 = Vec2{{ {}, {} }}, .p2 = Vec2{{ {}, {} }} }}, ", + .{ a1, a2, divisions, p1[0], p1[1], p2[0], p2[1] }, + ); + try outlist.appendSlice(of); } try outlist.appendSlice("};\n"); } diff --git a/src/main.zig b/src/main.zig index 41e8f4c..4fb10a1 100644 --- a/src/main.zig +++ b/src/main.zig @@ -60,7 +60,7 @@ const Kinematic = struct { } }; const Wire = struct { - nodes: std.BoundedArray(Pos, 32), + nodes: std.BoundedArray(Pos, 32) = std.BoundedArray(Pos, 32).init(0), enabled: bool = false, pub fn begin(this: *@This()) *Pos { @@ -70,6 +70,16 @@ const Wire = struct { pub fn end(this: *@This()) *Pos { return &this.nodes.slice()[this.nodes.len - 1]; } + + pub fn straighten(this: *@This()) void { + const b = this.begin().pos; + const e = this.end().pos; + const size = e - b; + for (this.nodes.slice()) |*node, i| { + if (i == 0 or i == this.nodes.len - 1) continue; + node.pos = b + @splat(2, @intToFloat(f32, i)) * size / @splat(2, @intToFloat(f32, this.nodes.len)); + } + } }; const Physics = struct { gravity: Vec2f, friction: Vec2f }; const Player = struct { @@ -234,21 +244,19 @@ export fn start() void { }; for (assets.wire) |wire| { - const begin = vec2tovec2f(wire.p1); - const end = vec2tovec2f(wire.p2); - const size = end - begin; - - var nodes = std.BoundedArray(Pos, 32).init(0) catch showErr("Nodes"); + var w = wires.addOne() catch showErr("New wire"); + const divisions = wire.divisions; var i: usize = 0; - const divisions = @floatToInt(usize, util.lengthf(size) / 6); while (i <= divisions) : (i += 1) { - const pos = begin + @splat(2, @intToFloat(f32, i)) * size / @splat(2, @intToFloat(f32, divisions)); - nodes.append(Pos.init(pos)) catch showErr("Appending nodes"); + w.nodes.append(Pos.init(Vec2f{ 0, 0 })) catch showErr("Appending nodes"); } - if (wire.a1) nodes.slice()[0].pinned = true; - if (wire.a2) nodes.slice()[nodes.len - 1].pinned = true; - const w = Wire{ .nodes = nodes }; - wires.append(w) catch showErr("Appending wire"); + w.begin().pos = util.vec2ToVec2f(wire.p1); + w.end().pos = util.vec2ToVec2f(wire.p2); + + w.begin().pinned = wire.a1; + w.end().pinned = wire.a2; + + w.straighten(); } for (assets.sources) |source| { @@ -259,6 +267,7 @@ export fn start() void { circuit.addDoor(door); } + // _ = w4.diskw("", 0); if (!load()) { for (assets.coins) |coin| { coins.append(.{ @@ -480,21 +489,25 @@ fn load() bool { var begin = wires.slice()[id].begin(); begin.* = pos; begin.pinned = true; + wires.slice()[id].straighten(); }, .WireBeginLoose => { var begin = wires.slice()[id].begin(); begin.* = pos; begin.pinned = false; + wires.slice()[id].straighten(); }, .WireEndPinned => { var end = wires.slice()[id].end(); end.* = pos; end.pinned = true; + wires.slice()[id].straighten(); }, .WireEndLoose => { var end = wires.slice()[id].end(); end.* = pos; end.pinned = false; + wires.slice()[id].straighten(); }, } } diff --git a/src/util.zig b/src/util.zig index d754bc3..deaeb5f 100644 --- a/src/util.zig +++ b/src/util.zig @@ -45,7 +45,7 @@ pub fn vec2ToVec2f(vec2: Vec2) Vec2f { } pub fn vec2fToVec2(vec2f: Vec2f) Vec2 { - return Vec2{ @floatToInt(i32, vec2f[0]), @floatToInt(i32, vec2f[1]) }; + return Vec2{ @floatToInt(i32, @floor(vec2f[0])), @floatToInt(i32, @floor(vec2f[1])) }; } pub const AABB = struct { @@ -80,4 +80,3 @@ pub fn Queue(comptime T: type, len: usize) type { } }; } -