main: some minor cleanup
This commit is contained in:
parent
02381539a7
commit
8c6d9431c8
131
src/main.zig
131
src/main.zig
@ -3,7 +3,6 @@ const builtin = @import("builtin");
|
|||||||
|
|
||||||
const vaxis = @import("vaxis");
|
const vaxis = @import("vaxis");
|
||||||
const xev = @import("xev");
|
const xev = @import("xev");
|
||||||
const Cell = vaxis.Cell;
|
|
||||||
|
|
||||||
const networking = @import("./networking.zig");
|
const networking = @import("./networking.zig");
|
||||||
const rotctl = @import("./rotctl.zig");
|
const rotctl = @import("./rotctl.zig");
|
||||||
@ -206,6 +205,62 @@ pub const RotInt = struct {
|
|||||||
try self.vx.render(self.termbuffer.writer().any());
|
try self.vx.render(self.termbuffer.writer().any());
|
||||||
try self.termbuffer.flush();
|
try self.termbuffer.flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn terminalEvent(
|
||||||
|
self_: ?*RotInt,
|
||||||
|
loop: *xev.Loop,
|
||||||
|
watcher: *vaxis.xev.TtyWatcher(RotInt),
|
||||||
|
event: vaxis.xev.Event,
|
||||||
|
) xev.CallbackAction {
|
||||||
|
const self = self_.?;
|
||||||
|
switch (event) {
|
||||||
|
.key_press => |key| keyp: {
|
||||||
|
var mods = key.mods;
|
||||||
|
mods.caps_lock = false;
|
||||||
|
mods.num_lock = false;
|
||||||
|
const scale: f64 = if (std.meta.eql(mods, .{ .shift = true })) 1 else 10;
|
||||||
|
|
||||||
|
const delta: AzEl = switch (key.codepoint) {
|
||||||
|
vaxis.Key.left, vaxis.Key.kp_left => .{ .az = -0.1 * scale, .el = 0 },
|
||||||
|
vaxis.Key.right, vaxis.Key.kp_right => .{ .az = 0.1 * scale, .el = 0 },
|
||||||
|
vaxis.Key.up, vaxis.Key.kp_up => .{ .az = 0, .el = 0.1 * scale },
|
||||||
|
vaxis.Key.down, vaxis.Key.kp_down => .{ .az = 0 * scale, .el = -0.1 * scale },
|
||||||
|
'l' => {
|
||||||
|
if (std.meta.eql(mods, .{ .ctrl = true }))
|
||||||
|
self.vx.queueRefresh();
|
||||||
|
break :keyp;
|
||||||
|
},
|
||||||
|
'c' => {
|
||||||
|
if (std.meta.eql(mods, .{ .ctrl = true })) {
|
||||||
|
loop.stop();
|
||||||
|
return .disarm;
|
||||||
|
}
|
||||||
|
break :keyp;
|
||||||
|
},
|
||||||
|
'q' => {
|
||||||
|
if (std.meta.eql(mods, .{})) {
|
||||||
|
loop.stop();
|
||||||
|
return .disarm;
|
||||||
|
}
|
||||||
|
break :keyp;
|
||||||
|
},
|
||||||
|
else => break :keyp,
|
||||||
|
};
|
||||||
|
|
||||||
|
self.offsets.az += delta.az;
|
||||||
|
self.offsets.el += delta.el;
|
||||||
|
self.draw() catch {
|
||||||
|
self.warn("draw failure", .{});
|
||||||
|
};
|
||||||
|
},
|
||||||
|
.winsize => |ws| {
|
||||||
|
watcher.vx.resize(self.allocator, watcher.tty.anyWriter(), ws) catch
|
||||||
|
return .disarm;
|
||||||
|
},
|
||||||
|
else => {},
|
||||||
|
}
|
||||||
|
return .rearm;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn main() !void {
|
pub fn main() !void {
|
||||||
@ -236,7 +291,7 @@ pub fn main() !void {
|
|||||||
try app.initInPlace();
|
try app.initInPlace();
|
||||||
|
|
||||||
var vx_loop: vaxis.xev.TtyWatcher(RotInt) = undefined;
|
var vx_loop: vaxis.xev.TtyWatcher(RotInt) = undefined;
|
||||||
try vx_loop.init(&tty, &vx, &loop, &app, eventCallback);
|
try vx_loop.init(&tty, &vx, &loop, &app, RotInt.terminalEvent);
|
||||||
|
|
||||||
try vx.enterAltScreen(tty.anyWriter());
|
try vx.enterAltScreen(tty.anyWriter());
|
||||||
try vx.queryTerminalSend(tty.anyWriter());
|
try vx.queryTerminalSend(tty.anyWriter());
|
||||||
@ -247,75 +302,3 @@ pub fn main() !void {
|
|||||||
|
|
||||||
try loop.run(.until_done);
|
try loop.run(.until_done);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn eventCallback(
|
|
||||||
self_: ?*RotInt,
|
|
||||||
loop: *xev.Loop,
|
|
||||||
watcher: *vaxis.xev.TtyWatcher(RotInt),
|
|
||||||
event: vaxis.xev.Event,
|
|
||||||
) xev.CallbackAction {
|
|
||||||
const self = self_.?;
|
|
||||||
switch (event) {
|
|
||||||
.key_press => |key| keyp: {
|
|
||||||
var mods = key.mods;
|
|
||||||
mods.caps_lock = false;
|
|
||||||
mods.num_lock = false;
|
|
||||||
const scale: f64 = if (std.meta.eql(mods, .{ .shift = true })) 1 else 10;
|
|
||||||
|
|
||||||
const delta: AzEl = switch (key.codepoint) {
|
|
||||||
vaxis.Key.left, vaxis.Key.kp_left => .{ .az = -0.1 * scale, .el = 0 },
|
|
||||||
vaxis.Key.right, vaxis.Key.kp_right => .{ .az = 0.1 * scale, .el = 0 },
|
|
||||||
vaxis.Key.up, vaxis.Key.kp_up => .{ .az = 0, .el = 0.1 * scale },
|
|
||||||
vaxis.Key.down, vaxis.Key.kp_down => .{ .az = 0 * scale, .el = -0.1 * scale },
|
|
||||||
'l' => {
|
|
||||||
if (std.meta.eql(mods, .{ .ctrl = true }))
|
|
||||||
self.vx.queueRefresh();
|
|
||||||
break :keyp;
|
|
||||||
},
|
|
||||||
'c' => {
|
|
||||||
if (std.meta.eql(mods, .{ .ctrl = true })) {
|
|
||||||
loop.stop();
|
|
||||||
return .disarm;
|
|
||||||
}
|
|
||||||
break :keyp;
|
|
||||||
},
|
|
||||||
'q' => {
|
|
||||||
if (std.meta.eql(mods, .{})) {
|
|
||||||
loop.stop();
|
|
||||||
return .disarm;
|
|
||||||
}
|
|
||||||
break :keyp;
|
|
||||||
},
|
|
||||||
else => break :keyp,
|
|
||||||
};
|
|
||||||
|
|
||||||
self.offsets.az += delta.az;
|
|
||||||
self.offsets.el += delta.el;
|
|
||||||
self.draw() catch {
|
|
||||||
self.warn("draw failure", .{});
|
|
||||||
};
|
|
||||||
},
|
|
||||||
.winsize => |ws| {
|
|
||||||
watcher.vx.resize(self.allocator, watcher.tty.anyWriter(), ws) catch
|
|
||||||
return .disarm;
|
|
||||||
},
|
|
||||||
else => {},
|
|
||||||
}
|
|
||||||
return .rearm;
|
|
||||||
}
|
|
||||||
|
|
||||||
fn timerCallback(
|
|
||||||
ud: ?*RotInt,
|
|
||||||
loop: *xev.Loop,
|
|
||||||
completion: *xev.Completion,
|
|
||||||
err: xev.Timer.RunError!void,
|
|
||||||
) xev.CallbackAction {
|
|
||||||
_ = err catch @panic("timer error");
|
|
||||||
|
|
||||||
var app = ud orelse return .disarm;
|
|
||||||
app.draw() catch @panic("couldn't draw");
|
|
||||||
|
|
||||||
const timer = xev.Timer.init() catch unreachable;
|
|
||||||
timer.run(loop, completion, 8, RotInt, app, timerCallback);
|
|
||||||
return .disarm;
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user