repo: hackvr-turbo action: commit revision: path_from: revision_from: 674397c24c3f764e955494732f365eceae7150f7: path_to: revision_to:
commit 674397c24c3f764e955494732f365eceae7150f7 Author: Felix (xq) QueißnerDate: Wed Jun 24 23:44:02 2020 +0200 Initial vomit: red screen with no sound. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..3cef7be49b001678cdb11a5363a52f1be5510311 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +zig-cache/ diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000000000000000000000000000000000000..96070eaf3fb2626aa02c9f319ed018cc1cfb0038 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,23 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "type": "shell", + "command": "zig build", + "problemMatcher": [ + "$gcc" + ], + "presentation": { + "echo": false, + "reveal": "silent", + "focus": false, + "panel": "dedicated", + "showReuseMessage": false, + "clear": true + } + } + ] +} \ No newline at end of file diff --git a/build.zig b/build.zig new file mode 100644 index 0000000000000000000000000000000000000000..63afb17f56e01cdab369d205557665e772a358a8 --- /dev/null +++ b/build.zig @@ -0,0 +1,35 @@ +const std = @import("std"); + +const hackvr = std.build.Pkg{ + .name = "hackvr", + .path = "lib/hackvr/lib.zig", +}; + +pub fn build(b: *std.build.Builder) void { + // Standard target options allows the person running `zig build` to choose + // what target to build for. Here we do not override the defaults, which + // means any target is allowed, and the default is native. Other options + // for restricting supported target set are available. + const target = b.standardTargetOptions(.{}); + + // Standard release options allow the person running `zig build` to select + // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. + const mode = b.standardReleaseOptions(); + + const exe = b.addExecutable("hackvr-zig", "src/main.zig"); + exe.setTarget(target); + exe.setBuildMode(mode); + + exe.linkSystemLibrary("SDL2"); + exe.linkSystemLibrary("epoxy"); + + exe.addPackage(hackvr); + + exe.install(); + + const run_cmd = exe.run(); + run_cmd.step.dependOn(b.getInstallStep()); + + const run_step = b.step("run", "Run the app"); + run_step.dependOn(&run_cmd.step); +} diff --git a/data/dungeon.hackvr b/data/dungeon.hackvr new file mode 100644 index 0000000000000000000000000000000000000000..d2718803f256cf82138ce67ac97aa82d0394f9a9 --- /dev/null +++ b/data/dungeon.hackvr @@ -0,0 +1,736 @@ +wall_7_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_7_0 rotate 0 0 0 +wall_7_0 move 0 0 16 +wall_7_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_7_1 rotate 0 180 0 +wall_7_1 move 0 0 16 +wall_7_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_7_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_7_2 rotate 0 270 0 +wall_7_2 move 0 0 16 +wall_7_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_7_3 rotate 0 90 0 +wall_7_3 move 0 0 16 +wall_8_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_8_0 rotate 0 0 0 +wall_8_0 move 16 0 16 +wall_8_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_8_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_8_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_8_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_8_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_8_1 rotate 0 180 0 +door_close_8_1 move 18 0 8 +wall_8_1 rotate 0 180 0 +wall_8_1 move 16 0 16 +wall_8_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_8_2 rotate 0 270 0 +wall_8_2 move 16 0 16 +wall_8_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_8_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_8_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_8_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_8_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_8_3 rotate 0 90 0 +door_close_8_3 move 8 0 14 +wall_8_3 rotate 0 90 0 +wall_8_3 move 16 0 16 +wall_10_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_10_0 rotate 0 0 0 +wall_10_0 move 48 0 16 +wall_10_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_10_1 rotate 0 180 0 +wall_10_1 move 48 0 16 +wall_10_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_10_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_10_2 rotate 0 270 0 +wall_10_2 move 48 0 16 +wall_10_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_10_3 rotate 0 90 0 +wall_10_3 move 48 0 16 +wall_11_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_11_0 rotate 0 0 0 +wall_11_0 move 64 0 16 +wall_11_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_11_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_11_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_11_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_11_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_11_1 rotate 0 180 0 +door_close_11_1 move 66 0 8 +wall_11_1 rotate 0 180 0 +wall_11_1 move 64 0 16 +wall_11_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_11_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_11_2 rotate 0 270 0 +wall_11_2 move 64 0 16 +wall_11_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_11_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_11_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_11_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_11_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_11_3 rotate 0 90 0 +door_close_11_3 move 56 0 14 +wall_11_3 rotate 0 90 0 +wall_11_3 move 64 0 16 +wall_12_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_12_0 rotate 0 0 0 +wall_12_0 move 80 0 16 +wall_12_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_12_1 rotate 0 180 0 +wall_12_1 move 80 0 16 +wall_12_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_12_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_12_2 rotate 0 270 0 +wall_12_2 move 80 0 16 +wall_12_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_12_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_12_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_12_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_12_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_12_3 rotate 0 90 0 +door_close_12_3 move 72 0 14 +wall_12_3 rotate 0 90 0 +wall_12_3 move 80 0 16 +wall_13_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_13_0 rotate 0 0 0 +wall_13_0 move 96 0 16 +wall_13_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_13_1 rotate 0 180 0 +wall_13_1 move 96 0 16 +wall_13_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_13_2 rotate 0 270 0 +wall_13_2 move 96 0 16 +wall_13_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_13_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_13_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_13_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_13_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_13_3 rotate 0 90 0 +door_close_13_3 move 88 0 14 +wall_13_3 rotate 0 90 0 +wall_13_3 move 96 0 16 +wall_23_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_23_0 rotate 0 0 0 +wall_23_0 move 0 0 0 +wall_23_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_23_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_23_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_23_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_23_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_23_1 rotate 0 180 0 +door_close_23_1 move 2 0 -8 +wall_23_1 rotate 0 180 0 +wall_23_1 move 0 0 0 +wall_23_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_23_2 rotate 0 270 0 +wall_23_2 move 0 0 0 +wall_23_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_23_3 rotate 0 90 0 +wall_23_3 move 0 0 0 +wall_24_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_24_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_24_0 rotate 0 0 0 +wall_24_0 move 16 0 0 +wall_24_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_24_1 rotate 0 180 0 +wall_24_1 move 16 0 0 +wall_24_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_24_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_24_2 rotate 0 270 0 +wall_24_2 move 16 0 0 +wall_24_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_24_3 rotate 0 90 0 +wall_24_3 move 16 0 0 +wall_25_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_25_0 rotate 0 0 0 +wall_25_0 move 32 0 0 +wall_25_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_25_1 rotate 0 180 0 +wall_25_1 move 32 0 0 +wall_25_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_25_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_25_2 rotate 0 270 0 +wall_25_2 move 32 0 0 +wall_25_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_25_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_25_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_25_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_25_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_25_3 rotate 0 90 0 +door_close_25_3 move 24 0 -2 +wall_25_3 rotate 0 90 0 +wall_25_3 move 32 0 0 +wall_26_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_26_0 rotate 0 0 0 +wall_26_0 move 48 0 0 +wall_26_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_26_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_26_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_26_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_26_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_26_1 rotate 0 180 0 +door_close_26_1 move 50 0 -8 +wall_26_1 rotate 0 180 0 +wall_26_1 move 48 0 0 +wall_26_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_26_2 rotate 0 270 0 +wall_26_2 move 48 0 0 +wall_26_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_26_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_26_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_26_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_26_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_26_3 rotate 0 90 0 +door_close_26_3 move 40 0 -2 +wall_26_3 rotate 0 90 0 +wall_26_3 move 48 0 0 +wall_27_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_27_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_27_0 rotate 0 0 0 +wall_27_0 move 64 0 0 +wall_27_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_27_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_27_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_27_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_27_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_27_1 rotate 0 180 0 +door_close_27_1 move 66 0 -8 +wall_27_1 rotate 0 180 0 +wall_27_1 move 64 0 0 +wall_27_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_27_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_27_2 rotate 0 270 0 +wall_27_2 move 64 0 0 +wall_27_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_27_3 rotate 0 90 0 +wall_27_3 move 64 0 0 +wall_28_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_28_0 rotate 0 0 0 +wall_28_0 move 80 0 0 +wall_28_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_28_1 rotate 0 180 0 +wall_28_1 move 80 0 0 +wall_28_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_28_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_28_2 rotate 0 270 0 +wall_28_2 move 80 0 0 +wall_28_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_28_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_28_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_28_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_28_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_28_3 rotate 0 90 0 +door_close_28_3 move 72 0 -2 +wall_28_3 rotate 0 90 0 +wall_28_3 move 80 0 0 +wall_29_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_29_0 rotate 0 0 0 +wall_29_0 move 96 0 0 +wall_29_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_29_1 rotate 0 180 0 +wall_29_1 move 96 0 0 +wall_29_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_29_2 rotate 0 270 0 +wall_29_2 move 96 0 0 +wall_29_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_29_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_29_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_29_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_29_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_29_3 rotate 0 90 0 +door_close_29_3 move 88 0 -2 +wall_29_3 rotate 0 90 0 +wall_29_3 move 96 0 0 +wall_39_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_39_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_39_0 rotate 0 0 0 +wall_39_0 move 0 0 -16 +wall_39_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_39_1 rotate 0 180 0 +wall_39_1 move 0 0 -16 +wall_39_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_39_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_39_2 rotate 0 270 0 +wall_39_2 move 0 0 -16 +wall_39_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_39_3 rotate 0 90 0 +wall_39_3 move 0 0 -16 +wall_40_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_40_0 rotate 0 0 0 +wall_40_0 move 16 0 -16 +wall_40_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_40_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_40_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_40_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_40_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_40_1 rotate 0 180 0 +door_close_40_1 move 18 0 -24 +wall_40_1 rotate 0 180 0 +wall_40_1 move 16 0 -16 +wall_40_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_40_2 rotate 0 270 0 +wall_40_2 move 16 0 -16 +wall_40_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_40_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_40_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_40_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_40_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_40_3 rotate 0 90 0 +door_close_40_3 move 8 0 -18 +wall_40_3 rotate 0 90 0 +wall_40_3 move 16 0 -16 +wall_41_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_41_0 rotate 0 0 0 +wall_41_0 move 32 0 -16 +wall_41_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_41_1 rotate 0 180 0 +wall_41_1 move 32 0 -16 +wall_41_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_41_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_41_2 rotate 0 270 0 +wall_41_2 move 32 0 -16 +wall_41_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_41_3 rotate 0 90 0 +wall_41_3 move 32 0 -16 +wall_42_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_42_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_42_0 rotate 0 0 0 +wall_42_0 move 48 0 -16 +wall_42_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_42_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_42_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_42_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_42_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_42_1 rotate 0 180 0 +door_close_42_1 move 50 0 -24 +wall_42_1 rotate 0 180 0 +wall_42_1 move 48 0 -16 +wall_42_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_42_2 rotate 0 270 0 +wall_42_2 move 48 0 -16 +wall_42_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_42_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_42_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_42_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_42_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_42_3 rotate 0 90 0 +door_close_42_3 move 40 0 -18 +wall_42_3 rotate 0 90 0 +wall_42_3 move 48 0 -16 +wall_43_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_43_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_43_0 rotate 0 0 0 +wall_43_0 move 64 0 -16 +wall_43_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_43_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_43_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_43_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_43_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_43_1 rotate 0 180 0 +door_close_43_1 move 66 0 -24 +wall_43_1 rotate 0 180 0 +wall_43_1 move 64 0 -16 +wall_43_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_43_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_43_2 rotate 0 270 0 +wall_43_2 move 64 0 -16 +wall_43_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_43_3 rotate 0 90 0 +wall_43_3 move 64 0 -16 +wall_44_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_44_0 rotate 0 0 0 +wall_44_0 move 80 0 -16 +wall_44_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_44_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_44_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_44_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_44_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_44_1 rotate 0 180 0 +door_close_44_1 move 82 0 -24 +wall_44_1 rotate 0 180 0 +wall_44_1 move 80 0 -16 +wall_44_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_44_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_44_2 rotate 0 270 0 +wall_44_2 move 80 0 -16 +wall_44_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_44_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_44_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_44_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_44_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_44_3 rotate 0 90 0 +door_close_44_3 move 72 0 -18 +wall_44_3 rotate 0 90 0 +wall_44_3 move 80 0 -16 +wall_45_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_45_0 rotate 0 0 0 +wall_45_0 move 96 0 -16 +wall_45_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_45_1 rotate 0 180 0 +wall_45_1 move 96 0 -16 +wall_45_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_45_2 rotate 0 270 0 +wall_45_2 move 96 0 -16 +wall_45_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_45_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_45_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_45_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_45_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_45_3 rotate 0 90 0 +door_close_45_3 move 88 0 -18 +wall_45_3 rotate 0 90 0 +wall_45_3 move 96 0 -16 +wall_56_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_56_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_56_0 rotate 0 0 0 +wall_56_0 move 16 0 -32 +wall_56_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_56_1 rotate 0 180 0 +wall_56_1 move 16 0 -32 +wall_56_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_56_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_56_2 rotate 0 270 0 +wall_56_2 move 16 0 -32 +wall_56_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_56_3 rotate 0 90 0 +wall_56_3 move 16 0 -32 +wall_57_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_57_0 rotate 0 0 0 +wall_57_0 move 32 0 -32 +wall_57_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_57_1 rotate 0 180 0 +wall_57_1 move 32 0 -32 +wall_57_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_57_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_57_2 rotate 0 270 0 +wall_57_2 move 32 0 -32 +wall_57_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_57_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_57_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_57_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_57_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_57_3 rotate 0 90 0 +door_close_57_3 move 24 0 -34 +wall_57_3 rotate 0 90 0 +wall_57_3 move 32 0 -32 +wall_58_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_58_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_58_0 rotate 0 0 0 +wall_58_0 move 48 0 -32 +wall_58_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_58_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_58_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_58_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_58_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_58_1 rotate 0 180 0 +door_close_58_1 move 50 0 -40 +wall_58_1 rotate 0 180 0 +wall_58_1 move 48 0 -32 +wall_58_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_58_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_58_2 rotate 0 270 0 +wall_58_2 move 48 0 -32 +wall_58_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_58_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_58_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_58_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_58_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_58_3 rotate 0 90 0 +door_close_58_3 move 40 0 -34 +wall_58_3 rotate 0 90 0 +wall_58_3 move 48 0 -32 +wall_59_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_59_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_59_0 rotate 0 0 0 +wall_59_0 move 64 0 -32 +wall_59_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_59_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_59_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_59_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_59_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_59_1 rotate 0 180 0 +door_close_59_1 move 66 0 -40 +wall_59_1 rotate 0 180 0 +wall_59_1 move 64 0 -32 +wall_59_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_59_2 rotate 0 270 0 +wall_59_2 move 64 0 -32 +wall_59_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_59_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_59_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_59_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_59_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_59_3 rotate 0 90 0 +door_close_59_3 move 56 0 -34 +wall_59_3 rotate 0 90 0 +wall_59_3 move 64 0 -32 +wall_60_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_60_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_60_0 rotate 0 0 0 +wall_60_0 move 80 0 -32 +wall_60_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_60_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_60_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_60_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_60_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_60_1 rotate 0 180 0 +door_close_60_1 move 82 0 -40 +wall_60_1 rotate 0 180 0 +wall_60_1 move 80 0 -32 +wall_60_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_60_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_60_2 rotate 0 270 0 +wall_60_2 move 80 0 -32 +wall_60_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_60_3 rotate 0 90 0 +wall_60_3 move 80 0 -32 +wall_61_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_61_0 rotate 0 0 0 +wall_61_0 move 96 0 -32 +wall_61_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_61_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_61_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_61_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_61_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_61_1 rotate 0 180 0 +door_close_61_1 move 98 0 -40 +wall_61_1 rotate 0 180 0 +wall_61_1 move 96 0 -32 +wall_61_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_61_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_61_2 rotate 0 270 0 +wall_61_2 move 96 0 -32 +wall_61_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_61_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_61_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_61_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_61_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_61_3 rotate 0 90 0 +door_close_61_3 move 88 0 -34 +wall_61_3 rotate 0 90 0 +wall_61_3 move 96 0 -32 +wall_62_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_62_0 rotate 0 0 0 +wall_62_0 move 112 0 -32 +wall_62_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_62_1 rotate 0 180 0 +wall_62_1 move 112 0 -32 +wall_62_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_62_2 rotate 0 270 0 +wall_62_2 move 112 0 -32 +wall_62_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_62_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_62_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_62_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_62_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_62_3 rotate 0 90 0 +door_close_62_3 move 104 0 -34 +wall_62_3 rotate 0 90 0 +wall_62_3 move 112 0 -32 +wall_74_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_74_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_74_0 rotate 0 0 0 +wall_74_0 move 48 0 -48 +wall_74_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_74_1 rotate 0 180 0 +wall_74_1 move 48 0 -48 +wall_74_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_74_2 rotate 0 270 0 +wall_74_2 move 48 0 -48 +wall_74_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_74_3 rotate 0 90 0 +wall_74_3 move 48 0 -48 +wall_75_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_75_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_75_0 rotate 0 0 0 +wall_75_0 move 64 0 -48 +wall_75_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_75_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_75_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_75_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_75_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_75_1 rotate 0 180 0 +door_close_75_1 move 66 0 -56 +wall_75_1 rotate 0 180 0 +wall_75_1 move 64 0 -48 +wall_75_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_75_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_75_2 rotate 0 270 0 +wall_75_2 move 64 0 -48 +wall_75_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_75_3 rotate 0 90 0 +wall_75_3 move 64 0 -48 +wall_76_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_76_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_76_0 rotate 0 0 0 +wall_76_0 move 80 0 -48 +wall_76_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_76_1 rotate 0 180 0 +wall_76_1 move 80 0 -48 +wall_76_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_76_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_76_2 rotate 0 270 0 +wall_76_2 move 80 0 -48 +wall_76_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_76_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_76_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_76_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_76_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_76_3 rotate 0 90 0 +door_close_76_3 move 72 0 -50 +wall_76_3 rotate 0 90 0 +wall_76_3 move 80 0 -48 +wall_77_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_77_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_77_0 rotate 0 0 0 +wall_77_0 move 96 0 -48 +wall_77_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_77_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_77_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_77_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_77_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_77_1 rotate 0 180 0 +door_close_77_1 move 98 0 -56 +wall_77_1 rotate 0 180 0 +wall_77_1 move 96 0 -48 +wall_77_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_77_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_77_2 rotate 0 270 0 +wall_77_2 move 96 0 -48 +wall_77_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_77_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_77_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_77_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_77_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_77_3 rotate 0 90 0 +door_close_77_3 move 88 0 -50 +wall_77_3 rotate 0 90 0 +wall_77_3 move 96 0 -48 +wall_78_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_78_0 rotate 0 0 0 +wall_78_0 move 112 0 -48 +wall_78_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_78_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_78_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_78_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_78_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_78_1 rotate 0 180 0 +door_close_78_1 move 114 0 -56 +wall_78_1 rotate 0 180 0 +wall_78_1 move 112 0 -48 +wall_78_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_78_2 rotate 0 270 0 +wall_78_2 move 112 0 -48 +wall_78_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_78_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_78_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_78_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_78_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_78_3 rotate 0 90 0 +door_close_78_3 move 104 0 -50 +wall_78_3 rotate 0 90 0 +wall_78_3 move 112 0 -48 +wall_91_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_91_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_91_0 rotate 0 0 0 +wall_91_0 move 64 0 -64 +wall_91_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_91_1 rotate 0 180 0 +wall_91_1 move 64 0 -64 +wall_91_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_91_2 rotate 0 270 0 +wall_91_2 move 64 0 -64 +wall_91_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_91_3 rotate 0 90 0 +wall_91_3 move 64 0 -64 +wall_93_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_93_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_93_0 rotate 0 0 0 +wall_93_0 move 96 0 -64 +wall_93_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_93_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_93_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_93_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_93_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_93_1 rotate 0 180 0 +door_close_93_1 move 98 0 -72 +wall_93_1 rotate 0 180 0 +wall_93_1 move 96 0 -64 +wall_93_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_93_2 rotate 0 270 0 +wall_93_2 move 96 0 -64 +wall_93_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_93_3 rotate 0 90 0 +wall_93_3 move 96 0 -64 +wall_94_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_94_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_94_0 rotate 0 0 0 +wall_94_0 move 112 0 -64 +wall_94_1 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_94_1 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_94_1 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_94_1 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_94_1 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_94_1 rotate 0 180 0 +door_close_94_1 move 114 0 -72 +wall_94_1 rotate 0 180 0 +wall_94_1 move 112 0 -64 +wall_94_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_94_2 rotate 0 270 0 +wall_94_2 move 112 0 -64 +wall_94_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_94_3 rotate 0 90 0 +wall_94_3 move 112 0 -64 +wall_108_0 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_108_0 rotate 0 0 0 +wall_108_0 move 80 0 -80 +wall_108_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_108_1 rotate 0 180 0 +wall_108_1 move 80 0 -80 +wall_108_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_108_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_108_2 rotate 0 270 0 +wall_108_2 move 80 0 -80 +wall_108_3 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_108_3 rotate 0 90 0 +wall_108_3 move 80 0 -80 +wall_109_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_109_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_109_0 rotate 0 0 0 +wall_109_0 move 96 0 -80 +wall_109_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_109_1 rotate 0 180 0 +wall_109_1 move 96 0 -80 +wall_109_2 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_109_2 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_109_2 rotate 0 270 0 +wall_109_2 move 96 0 -80 +wall_109_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_109_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_109_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_109_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_109_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_109_3 rotate 0 90 0 +door_close_109_3 move 88 0 -82 +wall_109_3 rotate 0 90 0 +wall_109_3 move 96 0 -80 +wall_110_0 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_110_0 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_110_0 rotate 0 0 0 +wall_110_0 move 112 0 -80 +wall_110_1 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_110_1 rotate 0 180 0 +wall_110_1 move 112 0 -80 +wall_110_2 addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7 +wall_110_2 rotate 0 270 0 +wall_110_2 move 112 0 -80 +wall_110_3 addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7 +wall_110_3 addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7 +wall_110_3 addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9 +wall_110_3 addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7 +door_close_110_3 addshape 3 4 0 0 0 0 8 0 4 8 0 4 0 0 +door_close_110_3 rotate 0 90 0 +door_close_110_3 move 104 0 -82 +wall_110_3 rotate 0 90 0 +wall_110_3 move 112 0 -80 diff --git a/lib/hackvr/lib.zig b/lib/hackvr/lib.zig new file mode 100644 index 0000000000000000000000000000000000000000..30cc3fa44ca9e46b339e135e9a7b7c8f8b2cd946 --- /dev/null +++ b/lib/hackvr/lib.zig @@ -0,0 +1,27 @@ +const std = @import("std"); + +const real = f32; + +pub const Vec3D = struct { + x: real, y: real, z: real +}; + +pub const Attribute = struct { + color: u8, //color. not sure how I plan on using this. + luminance: u8, //brightness. 1 - 200 atm because X11 has grey1 - grey200 +}; + +pub const Shape3D = struct { + pub const Flavor = enum { + polygon, + elliptic_arc, + cubic_bezier, + quad_bezier, + }; + + id: []const u8, + flavour: Flavor, + points: []Vec3D, + velocity: Vec3D, + attributes: Attribute, +}; diff --git a/src/main.zig b/src/main.zig new file mode 100644 index 0000000000000000000000000000000000000000..4da82fe67e2d4c597e0c8ad02aa6d69ff81dead3 --- /dev/null +++ b/src/main.zig @@ -0,0 +1,107 @@ +const std = @import("std"); + +const hackvr = @import("hackvr"); + +const c = @cImport({ + @cInclude("epoxy/gl.h"); + @cInclude("SDL.h"); + // @cInclude("SDL_opengl.h"); +}); + +const SdlError = error{SdlFailure}; + +fn makeSdlError() SdlError { + std.log.err(.SDL, "{c}\n", .{c.SDL_GetError()}); + return error.SdlFailure; +} + +fn sdlCheck(result: c_int) !void { + if (result < 0) + return makeSdlError(); +} + +const CliOptions = struct { + multisampling: ?u7 = null, +}; + +const cli_options = CliOptions{ + .multisampling = null, +}; + +pub fn main() anyerror!void { + if (c.SDL_Init(c.SDL_INIT_EVERYTHING) < 0) { + return makeSdlError(); + } + defer _ = c.SDL_Quit(); + + try sdlCheck(c.SDL_GL_SetAttribute(.SDL_GL_CONTEXT_MAJOR_VERSION, 4)); + try sdlCheck(c.SDL_GL_SetAttribute(.SDL_GL_CONTEXT_MINOR_VERSION, 5)); + try sdlCheck(c.SDL_GL_SetAttribute(.SDL_GL_CONTEXT_FLAGS, c.SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG | c.SDL_GL_CONTEXT_DEBUG_FLAG)); + + if (cli_options.multisampling) |samples| { + try sdlCheck(c.SDL_GL_SetAttribute(c.SDL_GL_MULTISAMPLEBUFFERS, 1)); + try sdlCheck(c.SDL_GL_SetAttribute(c.SDL_GL_MULTISAMPLESAMPLES, samples)); + } + + var window = c.SDL_CreateWindow( + "HackVR Turbo", + c.SDL_WINDOWPOS_CENTERED, + c.SDL_WINDOWPOS_CENTERED, + 1280, + 720, + c.SDL_WINDOW_OPENGL, + ) orelse return makeSdlError(); + defer c.SDL_DestroyWindow(window); + + var context = c.SDL_GL_CreateContext(window) orelse return makeSdlError(); + defer _ = c.SDL_GL_DeleteContext(context); + + try sdlCheck(c.SDL_GL_MakeCurrent(window, context)); + + c.glDebugMessageCallback(openGlDebugCallback, null); + + mainLoop: while (true) { + // process events + { + var event: c.SDL_Event = undefined; + while (c.SDL_PollEvent(&event) != 0) { + switch (event.type) { + c.SDL_QUIT => break :mainLoop, + else => std.log.notice(.HackVR, "Unhandled event: {}\n", .{event.type}), + } + } + } + + { + // render + c.glClearColor(1.0, 0.0, 0.0, 1.0); + c.glClear(c.GL_COLOR_BUFFER_BIT); + + c.SDL_GL_SwapWindow(window); + c.SDL_Delay(10); + } + } +} + +fn openGlDebugCallback( + source: c.GLenum, + msg_type: c.GLenum, + id: c.GLuint, + severity: c.GLenum, + length: c.GLsizei, + message: [*c]const c.GLchar, + userParam: ?*const c_void, +) callconv(.C) void { + const msg_fmt = "{}\n"; + const msg_arg = .{ + message.?[0..@intCast(usize, length)], + }; + + switch (severity) { + c.GL_DEBUG_SEVERITY_HIGH => std.log.err(.OpenGL, msg_fmt, msg_arg), + c.GL_DEBUG_SEVERITY_MEDIUM => std.log.warn(.OpenGL, msg_fmt, msg_arg), + c.GL_DEBUG_SEVERITY_LOW => std.log.notice(.OpenGL, msg_fmt, msg_arg), + c.GL_DEBUG_SEVERITY_NOTIFICATION => std.log.notice(.OpenGL, msg_fmt, msg_arg), + else => std.log.crit(.OpenGL, msg_fmt, msg_arg), + } +}
-----END OF PAGE-----