Skip to content

Commit

Permalink
Merge pull request #5 from markkimsal/features/android-ui-2
Browse files Browse the repository at this point in the history
Features/android UI 2
  • Loading branch information
markkimsal authored Sep 29, 2024
2 parents d35bcba + a766ef4 commit b4cf9b5
Show file tree
Hide file tree
Showing 5 changed files with 282 additions and 72 deletions.
10 changes: 8 additions & 2 deletions zig-src/src/bgm.zig
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,21 @@ var song_list: [3]Song = [3]Song{ Song{
} };

var curr_song: ?*mixer.Mix_Music = null;
pub var song_index_: usize = 0;

pub fn start_song(song_index: usize) void {
std.log.info(" song index {}", .{song_index});
var s_index = song_index;
const music = mixer.Mix_Init(mixer.MIX_INIT_MOD | mixer.MIX_INIT_MP3 | mixer.MIX_INIT_OGG);
const opened = mixer.Mix_OpenAudio(48000, mixer.AUDIO_S16, 2, 4096);
_ = opened;
_ = mixer.Mix_Volume(-1, mixer.MIX_MAX_VOLUME/2);
_ = mixer.Mix_VolumeMusic(mixer.MIX_MAX_VOLUME/2);

const filename = song_list[song_index].filename;
if (s_index >= song_list.len) {
s_index = s_index % song_list.len;
}
std.log.info(" song index {}", .{s_index});
const filename = song_list[s_index].filename;
var buffer = [_]u8{undefined} ** 100;
const printed = std.fmt.bufPrint(&buffer, "media/music/{s}", .{filename}) catch "out-of-memory";
if (builtin.os.tag == .windows) {
Expand All @@ -57,6 +62,7 @@ pub fn start_song(song_index: usize) void {
} else {
std.log.err("cannot load song: {s}", .{mixer.SDL_GetError()});
}
song_index_ = s_index;
}

pub fn pause_music() void {
Expand Down
42 changes: 22 additions & 20 deletions zig-src/src/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@ const GameModes = @import("modes/game_modes.zig");
const GameModeType = @import("modes/game_modes.zig").GameModeType;
const SpriteMod = @import("sprite.zig");

const ANDROID = false;
const ANDROID = true;

const heap_alloc = std.heap.c_allocator;
pub var mode: *sdl.SDL_DisplayMode = undefined;

var current_song_index: usize = 0;
pub fn main() !void {
Expand All @@ -24,39 +25,37 @@ pub fn main() !void {
}
defer sdl.SDL_Quit();

if (ANDROID) {
if (!ANDROID) {
_ = sdl.SDL_SetHint(sdl.SDL_HINT_MOUSE_TOUCH_EVENTS, "1");
_ = sdl.SDL_SetHint(sdl.SDL_HINT_TOUCH_MOUSE_EVENTS, "0");
_ = sdl.SDL_SetHint(sdl.SDL_HINT_ANDROID_TRAP_BACK_BUTTON, "1");
} else {
_ = sdl.SDL_SetHint(sdl.SDL_HINT_MOUSE_TOUCH_EVENTS, "0");
_ = sdl.SDL_SetHint(sdl.SDL_HINT_TOUCH_MOUSE_EVENTS, "0");
_ = sdl.SDL_SetHint(sdl.SDL_HINT_ANDROID_TRAP_BACK_BUTTON, "1");
}

var mode = heap_alloc.create(sdl.SDL_DisplayMode) catch sdlPanic();
mode = heap_alloc.create(sdl.SDL_DisplayMode) catch sdlPanic();
_ = sdl.SDL_GetDisplayMode(0, 0, mode);
defer sdl.SDL_free(mode);

var window_flags: c_uint = sdl.SDL_WINDOW_SHOWN | sdl.SDL_WINDOW_RESIZABLE;
var window_flags: c_uint = sdl.SDL_WINDOW_SHOWN | sdl.SDL_WINDOW_RESIZABLE;
if (ANDROID) {
window_flags = sdl.SDL_WINDOW_FULLSCREEN | sdl.SDL_WINDOW_BORDERLESS;
} else {
// windowed mode, ovverride mode w/h
mode.w = 640;
mode.h = 680;
mode.w = 600;
mode.h = 800;
}
const window = sdl.SDL_CreateWindow(
"Super Cube Slide",
sdl.SDL_WINDOWPOS_CENTERED,
sdl.SDL_WINDOWPOS_CENTERED,
mode.w,
mode.h,
window_flags
) orelse sdlPanic();
const window = sdl.SDL_CreateWindow("Super Cube Slide", sdl.SDL_WINDOWPOS_CENTERED, sdl.SDL_WINDOWPOS_CENTERED, mode.w, mode.h, window_flags) orelse sdlPanic();
defer sdl.SDL_DestroyWindow(window);

bgm.start_song(current_song_index);
defer bgm.close();

var renderer_flags: c_uint = sdl.SDL_RENDERER_ACCELERATED;
if (ANDROID) {
renderer_flags |= sdl.SDL_RENDERER_PRESENTVSYNC;
if (ANDROID) {
renderer_flags |= sdl.SDL_RENDERER_PRESENTVSYNC;
}
var renderer = sdl.SDL_CreateRenderer(window, -1, renderer_flags) orelse sdlPanic();

Expand All @@ -65,7 +64,7 @@ pub fn main() !void {
return err;
};

var game_mode: GameModes.GameMode = GameModes.GameMode{ .attract = try AttractMode.AttractMode.init(renderer) };
var game_mode: GameModes.GameMode = GameModes.GameMode{ .attract = try AttractMode.AttractMode.init(heap_alloc, renderer) };
// var game_mode: GameModes.GameMode = GameModes.GameMode{ .timed_play = try TimedPlayMode.init(renderer) };

var poll_event: sdl.SDL_Event = undefined;
Expand All @@ -88,7 +87,10 @@ pub fn main() !void {
const consumed = game_mode.on_key(&poll_event.key);
break :sw_blk consumed;
},
sdl.SDL_MOUSEBUTTONUP, sdl.SDL_MOUSEBUTTONDOWN, sdl.SDL_MOUSEWHEEL, => sw_blk: {
sdl.SDL_MOUSEBUTTONUP,
sdl.SDL_MOUSEBUTTONDOWN,
sdl.SDL_MOUSEWHEEL,
=> sw_blk: {
const consumed = game_mode.on_input(&poll_event);
break :sw_blk consumed;
},
Expand All @@ -111,7 +113,7 @@ pub fn main() !void {
if (next_mode) |mode_type| {
std.log.info("switching to new game mode: {?}", .{@intFromEnum(mode_type)});
const new_mode = switch (mode_type) {
GameModeType.Attract => GameModes.GameMode{ .attract = try AttractMode.AttractMode.init(renderer) },
GameModeType.Attract => GameModes.GameMode{ .attract = try AttractMode.AttractMode.init(heap_alloc, renderer) },
GameModeType.TimedPlay => GameModes.GameMode{ .timed_play = try TimedPlayMode.init(renderer) },
// GameModeType.TimedPlay => try AttractMode.AttractMode.init(&renderer),
};
Expand All @@ -125,7 +127,7 @@ pub fn main() !void {

// try renderer.setColorRGB(0xF7, 0xA4, 0x1D);
// if (sdl.SDL_SetRenderDrawColor(renderer, 0xF7, 0xA4, 0x1D, 255) < 0) {}
if (sdl.SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00) < 0) {}
if (sdl.SDL_SetRenderDrawColor(renderer, 0x20, 0x10, 0x10, 0xFF) < 0) {}

// try renderer.clear();
if (sdl.SDL_RenderClear(renderer) > 0) {}
Expand Down
Loading

0 comments on commit b4cf9b5

Please sign in to comment.