Main Menu Structure WIP
This commit is contained in:
parent
df495eb608
commit
0d7bd044dc
|
@ -0,0 +1,58 @@
|
|||
const std = @import("std");
|
||||
const SDL = @import("sdl2");
|
||||
|
||||
const MenuSelection = @import("MenuSelection.zig");
|
||||
const MenuTab = @import("MenuTab.zig");
|
||||
|
||||
const Self = @This();
|
||||
|
||||
tab_list: [2]MenuTab = [2]MenuTab{
|
||||
MenuTab.init("1P", &.{
|
||||
MenuSelection.init("Play", play),
|
||||
MenuSelection.init("Print", print),
|
||||
}),
|
||||
MenuTab.init("Options", &.{
|
||||
MenuSelection.init("Play", play),
|
||||
MenuSelection.init("Print", print),
|
||||
}),
|
||||
},
|
||||
|
||||
tab: usize = 0,
|
||||
selection: usize = 0,
|
||||
|
||||
holding_down: bool = false,
|
||||
|
||||
pub fn init() Self {
|
||||
return Self{};
|
||||
}
|
||||
|
||||
pub fn tick(self: *Self) void {
|
||||
var key_state = SDL.SDL_GetKeyboardState(null);
|
||||
if (key_state[SDL.SDL_SCANCODE_DOWN] == 1 and !self.holding_down) {
|
||||
self.holding_down = true;
|
||||
self.actionSelDown();
|
||||
}
|
||||
if (key_state[SDL.SDL_SCANCODE_DOWN] == 0) {
|
||||
self.holding_down = false;
|
||||
}
|
||||
std.debug.print(
|
||||
\\Tab: {s}
|
||||
\\Selection: {s}
|
||||
\\
|
||||
, .{ self.tab_list[self.tab].name, self.tab_list[self.tab].contents[self.selection].name });
|
||||
}
|
||||
|
||||
fn actionSelDown(self: *Self) void {
|
||||
self.selection += 1;
|
||||
self.selection %= self.tab_list[self.tab].contents.len;
|
||||
}
|
||||
|
||||
fn play(self: *Self) void {
|
||||
_ = self;
|
||||
std.debug.print("Play", .{});
|
||||
}
|
||||
|
||||
fn print(self: *Self) void {
|
||||
_ = self;
|
||||
std.debug.print("Print", .{});
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
const MainMenu = @import("MainMenu.zig");
|
||||
|
||||
const Self = @This();
|
||||
|
||||
name: []const u8,
|
||||
action: fn(*MainMenu) void,
|
||||
|
||||
pub fn init(name: []const u8, action: fn(*MainMenu) void) Self {
|
||||
return Self {
|
||||
.name = name,
|
||||
.action = action,
|
||||
};
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
const std = @import("std");
|
||||
|
||||
const MenuSelection = @import("MenuSelection.zig");
|
||||
|
||||
const Self = @This();
|
||||
|
||||
name: []const u8,
|
||||
contents: []MenuSelection,
|
||||
contents_buffer: [50]MenuSelection,
|
||||
|
||||
pub fn init(name: []const u8, contents: []const MenuSelection) Self {
|
||||
var ret = Self {
|
||||
.name = name,
|
||||
.contents = undefined,
|
||||
.contents_buffer = undefined,
|
||||
};
|
||||
std.mem.copy(MenuSelection, &ret.contents_buffer, contents);
|
||||
ret.contents = ret.contents_buffer[0..contents.len];
|
||||
return ret;
|
||||
}
|
|
@ -2,6 +2,7 @@ const std = @import("std");
|
|||
const SDL = @import("sdl2");
|
||||
|
||||
const Game = @import("Game.zig");
|
||||
const MainMenu = @import("MainMenu.zig");
|
||||
|
||||
pub fn main() !void {
|
||||
const stderr = std.io.getStdErr();
|
||||
|
@ -27,7 +28,8 @@ pub fn main() !void {
|
|||
var renderer = SDL.SDL_CreateRenderer(window, -1, SDL.SDL_RENDERER_PRESENTVSYNC | SDL.SDL_RENDERER_ACCELERATED) orelse return;
|
||||
defer _ = SDL.SDL_DestroyRenderer(renderer);
|
||||
|
||||
var game = Game.init(renderer);
|
||||
//var game = Game.init(renderer);
|
||||
var main_menu = MainMenu.init();
|
||||
|
||||
_ = SDL.SDL_SetRenderDrawBlendMode(renderer, SDL.SDL_BLENDMODE_BLEND);
|
||||
|
||||
|
@ -42,7 +44,8 @@ pub fn main() !void {
|
|||
_ = SDL.SDL_SetRenderDrawColor(renderer, 231, 247, 255, 0xFF);
|
||||
_ = SDL.SDL_RenderClear(renderer);
|
||||
|
||||
game.tick();
|
||||
//game.tick();
|
||||
main_menu.tick();
|
||||
|
||||
SDL.SDL_RenderPresent(renderer);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue