diff options
51 files changed, 37 insertions, 41 deletions
diff --git a/.gitmodules b/.gitmodules index d4fb611..c564c4d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,6 +10,6 @@ [submodule "lib/gfz"] path = lib/gfz url = https://git.sr.ht/~cnx/gfz -[submodule "lib/lodepng"] - path = lib/lodepng - url = https://git.sr.ht/~cnx/lodepng +[submodule "lib/qoi"] + path = lib/qoi + url = https://github.com/MasterQ32/zig-qoi diff --git a/build.zig b/build.zig index 1531162..e16c542 100644 --- a/build.zig +++ b/build.zig @@ -51,12 +51,11 @@ pub fn build(b: *Builder) void { exe.addCSourceFile("src/Sprites.cpp", &cxxflags); exe.addCSourceFile("src/Text.cpp", &cxxflags); - exe.addCSourceFile("lib/lodepng/lodepng.c", &.{ "-ansi", "-pedantic" }); - exe.addIncludeDir("lib/lodepng"); exe.addPackagePath("gfz", "lib/gfz/src/gfz.zig"); @import("lib/gfz/build.zig").link(exe); exe.addPackagePath("ini", "lib/ini/src/ini.zig"); exe.addPackagePath("loca", "lib/loca/src/main.zig"); + exe.addPackagePath("qoi", "lib/qoi/src/qoi.zig"); exe.addPackagePath("zeal", "lib/zeal/src/zeal.zig"); @import("lib/zeal/build.zig").link(exe); diff --git a/data/textures/black.png b/data/textures/black.png deleted file mode 100644 index 9fff93b..0000000 --- a/data/textures/black.png +++ /dev/null Binary files differdiff --git a/data/textures/black.qoi b/data/textures/black.qoi new file mode 100644 index 0000000..de68f65 --- /dev/null +++ b/data/textures/black.qoi Binary files differdiff --git a/data/textures/blood/00.png b/data/textures/blood/00.png deleted file mode 100644 index c43e6e8..0000000 --- a/data/textures/blood/00.png +++ /dev/null Binary files differdiff --git a/data/textures/blood/00.qoi b/data/textures/blood/00.qoi new file mode 100644 index 0000000..5080566 --- /dev/null +++ b/data/textures/blood/00.qoi Binary files differdiff --git a/data/textures/blood/01.png b/data/textures/blood/01.png deleted file mode 100644 index 996f90e..0000000 --- a/data/textures/blood/01.png +++ /dev/null Binary files differdiff --git a/data/textures/blood/01.qoi b/data/textures/blood/01.qoi new file mode 100644 index 0000000..631b270 --- /dev/null +++ b/data/textures/blood/01.qoi Binary files differdiff --git a/data/textures/blood/02.png b/data/textures/blood/02.png deleted file mode 100644 index f691690..0000000 --- a/data/textures/blood/02.png +++ /dev/null Binary files differdiff --git a/data/textures/blood/02.qoi b/data/textures/blood/02.qoi new file mode 100644 index 0000000..058af63 --- /dev/null +++ b/data/textures/blood/02.qoi Binary files differdiff --git a/data/textures/blood/03.png b/data/textures/blood/03.png deleted file mode 100644 index 15a2101..0000000 --- a/data/textures/blood/03.png +++ /dev/null Binary files differdiff --git a/data/textures/blood/03.qoi b/data/textures/blood/03.qoi new file mode 100644 index 0000000..dec13ba --- /dev/null +++ b/data/textures/blood/03.qoi Binary files differdiff --git a/data/textures/blood/04.png b/data/textures/blood/04.png deleted file mode 100644 index 4c8e5cb..0000000 --- a/data/textures/blood/04.png +++ /dev/null Binary files differdiff --git a/data/textures/blood/04.qoi b/data/textures/blood/04.qoi new file mode 100644 index 0000000..8a064eb --- /dev/null +++ b/data/textures/blood/04.qoi Binary files differdiff --git a/data/textures/blood/05.png b/data/textures/blood/05.png deleted file mode 100644 index a54c138..0000000 --- a/data/textures/blood/05.png +++ /dev/null Binary files differdiff --git a/data/textures/blood/05.qoi b/data/textures/blood/05.qoi new file mode 100644 index 0000000..e8db212 --- /dev/null +++ b/data/textures/blood/05.qoi Binary files differdiff --git a/data/textures/blood/06.png b/data/textures/blood/06.png deleted file mode 100644 index 1ff2dea..0000000 --- a/data/textures/blood/06.png +++ /dev/null Binary files differdiff --git a/data/textures/blood/06.qoi b/data/textures/blood/06.qoi new file mode 100644 index 0000000..c399621 --- /dev/null +++ b/data/textures/blood/06.qoi Binary files differdiff --git a/data/textures/blood/07.png b/data/textures/blood/07.png deleted file mode 100644 index f746bc9..0000000 --- a/data/textures/blood/07.png +++ /dev/null Binary files differdiff --git a/data/textures/blood/07.qoi b/data/textures/blood/07.qoi new file mode 100644 index 0000000..5160d25 --- /dev/null +++ b/data/textures/blood/07.qoi Binary files differdiff --git a/data/textures/blood/08.png b/data/textures/blood/08.png deleted file mode 100644 index 0bcd5a5..0000000 --- a/data/textures/blood/08.png +++ /dev/null Binary files differdiff --git a/data/textures/blood/08.qoi b/data/textures/blood/08.qoi new file mode 100644 index 0000000..2798c7a --- /dev/null +++ b/data/textures/blood/08.qoi Binary files differdiff --git a/data/textures/blood/09.png b/data/textures/blood/09.png deleted file mode 100644 index 3dade05..0000000 --- a/data/textures/blood/09.png +++ /dev/null Binary files differdiff --git a/data/textures/blood/09.qoi b/data/textures/blood/09.qoi new file mode 100644 index 0000000..4e3a9ac --- /dev/null +++ b/data/textures/blood/09.qoi Binary files differdiff --git a/data/textures/blood/10.png b/data/textures/blood/10.png deleted file mode 100644 index fb461da..0000000 --- a/data/textures/blood/10.png +++ /dev/null Binary files differdiff --git a/data/textures/blood/10.qoi b/data/textures/blood/10.qoi new file mode 100644 index 0000000..85c66a6 --- /dev/null +++ b/data/textures/blood/10.qoi Binary files differdiff --git a/data/textures/flare.png b/data/textures/flare.png deleted file mode 100644 index b7f0c30..0000000 --- a/data/textures/flare.png +++ /dev/null Binary files differdiff --git a/data/textures/flare.qoi b/data/textures/flare.qoi new file mode 100644 index 0000000..d43c8a7 --- /dev/null +++ b/data/textures/flare.qoi Binary files differdiff --git a/data/textures/font.png b/data/textures/font.png deleted file mode 100644 index a48ae83..0000000 --- a/data/textures/font.png +++ /dev/null Binary files differdiff --git a/data/textures/font.qoi b/data/textures/font.qoi new file mode 100644 index 0000000..42817b8 --- /dev/null +++ b/data/textures/font.qoi Binary files differdiff --git a/data/textures/scope.png b/data/textures/scope.png deleted file mode 100644 index e3acddf..0000000 --- a/data/textures/scope.png +++ /dev/null Binary files differdiff --git a/data/textures/scope.qoi b/data/textures/scope.qoi new file mode 100644 index 0000000..652e093 --- /dev/null +++ b/data/textures/scope.qoi Binary files differdiff --git a/data/textures/sprites/blood.png b/data/textures/sprites/blood.png deleted file mode 100644 index 6c02b02..0000000 --- a/data/textures/sprites/blood.png +++ /dev/null Binary files differdiff --git a/data/textures/sprites/blood.qoi b/data/textures/sprites/blood.qoi new file mode 100644 index 0000000..d5a22ed --- /dev/null +++ b/data/textures/sprites/blood.qoi Binary files differdiff --git a/data/textures/sprites/flash-hit.png b/data/textures/sprites/flash-hit.png deleted file mode 100644 index 0b7781b..0000000 --- a/data/textures/sprites/flash-hit.png +++ /dev/null Binary files differdiff --git a/data/textures/sprites/flash-hit.qoi b/data/textures/sprites/flash-hit.qoi new file mode 100644 index 0000000..d6b397f --- /dev/null +++ b/data/textures/sprites/flash-hit.qoi Binary files differdiff --git a/data/textures/sprites/flash-muzzle.png b/data/textures/sprites/flash-muzzle.png deleted file mode 100644 index ec99efd..0000000 --- a/data/textures/sprites/flash-muzzle.png +++ /dev/null Binary files differdiff --git a/data/textures/sprites/flash-muzzle.qoi b/data/textures/sprites/flash-muzzle.qoi new file mode 100644 index 0000000..1f27810 --- /dev/null +++ b/data/textures/sprites/flash-muzzle.qoi Binary files differdiff --git a/data/textures/sprites/person-dead.png b/data/textures/sprites/person-dead.png deleted file mode 100644 index fc2c78f..0000000 --- a/data/textures/sprites/person-dead.png +++ /dev/null Binary files differdiff --git a/data/textures/sprites/person-dead.qoi b/data/textures/sprites/person-dead.qoi new file mode 100644 index 0000000..90cfb27 --- /dev/null +++ b/data/textures/sprites/person-dead.qoi Binary files differdiff --git a/data/textures/sprites/person.png b/data/textures/sprites/person.png deleted file mode 100644 index d1a7cb0..0000000 --- a/data/textures/sprites/person.png +++ /dev/null Binary files differdiff --git a/data/textures/sprites/person.qoi b/data/textures/sprites/person.qoi new file mode 100644 index 0000000..ca4c56f --- /dev/null +++ b/data/textures/sprites/person.qoi Binary files differdiff --git a/data/textures/sprites/smoke.png b/data/textures/sprites/smoke.png deleted file mode 100644 index 1cef15c..0000000 --- a/data/textures/sprites/smoke.png +++ /dev/null Binary files differdiff --git a/data/textures/sprites/smoke.qoi b/data/textures/sprites/smoke.qoi new file mode 100644 index 0000000..08b5f98 --- /dev/null +++ b/data/textures/sprites/smoke.qoi Binary files differdiff --git a/data/textures/sprites/white.png b/data/textures/sprites/white.png deleted file mode 100644 index 0768357..0000000 --- a/data/textures/sprites/white.png +++ /dev/null Binary files differdiff --git a/data/textures/sprites/white.qoi b/data/textures/sprites/white.qoi new file mode 100644 index 0000000..1fd90f6 --- /dev/null +++ b/data/textures/sprites/white.qoi Binary files differdiff --git a/lib/lodepng b/lib/lodepng deleted file mode 160000 -Subproject b9be5ef13d426142cb6075977ef8eef999fd578 diff --git a/lib/qoi b/lib/qoi new file mode 160000 +Subproject 877af8c6440347b3f244c0dccd675be26836a74 diff --git a/src/GameInitDispose.cpp b/src/GameInitDispose.cpp index 4182c24..4ae9971 100644 --- a/src/GameInitDispose.cpp +++ b/src/GameInitDispose.cpp @@ -1018,33 +1018,33 @@ void initGl(Game* game) glPolygonOffset(-8,0); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - game->text.FontTexture = loadTexture("font.png"); + game->text.FontTexture = loadTexture("font.qoi"); game->text.BuildFont(); - game->personspritetextureptr = loadTexture("sprites/person.png"); - game->deadpersonspritetextureptr = loadTexture("sprites/person-dead.png"); - game->scopetextureptr = loadTexture("scope.png"); - game->flaretextureptr = loadTexture("flare.png"); - - sprites.flaretextureptr = loadTexture("sprites/flash-hit.png"); - sprites.muzzleflaretextureptr = loadTexture("sprites/flash-muzzle.png"); - sprites.smoketextureptr = loadTexture("sprites/smoke.png"); - sprites.bloodtextureptr = loadTexture("sprites/blood.png"); - sprites.raintextureptr = loadTexture("sprites/white.png"); - sprites.snowtextureptr = loadTexture("sprites/white.png"); - - decals.bulletholetextureptr = loadTexture("black.png"); - decals.cratertextureptr = loadTexture("black.png"); - decals.bloodtextureptr[0u] = loadTexture("blood/00.png"); - decals.bloodtextureptr[1u] = loadTexture("blood/01.png"); - decals.bloodtextureptr[2u] = loadTexture("blood/02.png"); - decals.bloodtextureptr[3u] = loadTexture("blood/03.png"); - decals.bloodtextureptr[4u] = loadTexture("blood/04.png"); - decals.bloodtextureptr[5u] = loadTexture("blood/05.png"); - decals.bloodtextureptr[6u] = loadTexture("blood/06.png"); - decals.bloodtextureptr[7u] = loadTexture("blood/07.png"); - decals.bloodtextureptr[8u] = loadTexture("blood/08.png"); - decals.bloodtextureptr[9u] = loadTexture("blood/09.png"); - decals.bloodtextureptr[10] = loadTexture("blood/10.png"); + game->personspritetextureptr = loadTexture("sprites/person.qoi"); + game->deadpersonspritetextureptr = loadTexture("sprites/person-dead.qoi"); + game->scopetextureptr = loadTexture("scope.qoi"); + game->flaretextureptr = loadTexture("flare.qoi"); + + sprites.flaretextureptr = loadTexture("sprites/flash-hit.qoi"); + sprites.muzzleflaretextureptr = loadTexture("sprites/flash-muzzle.qoi"); + sprites.smoketextureptr = loadTexture("sprites/smoke.qoi"); + sprites.bloodtextureptr = loadTexture("sprites/blood.qoi"); + sprites.raintextureptr = loadTexture("sprites/white.qoi"); + sprites.snowtextureptr = loadTexture("sprites/white.qoi"); + + decals.bulletholetextureptr = loadTexture("black.qoi"); + decals.cratertextureptr = loadTexture("black.qoi"); + decals.bloodtextureptr[0u] = loadTexture("blood/00.qoi"); + decals.bloodtextureptr[1u] = loadTexture("blood/01.qoi"); + decals.bloodtextureptr[2u] = loadTexture("blood/02.qoi"); + decals.bloodtextureptr[3u] = loadTexture("blood/03.qoi"); + decals.bloodtextureptr[4u] = loadTexture("blood/04.qoi"); + decals.bloodtextureptr[5u] = loadTexture("blood/05.qoi"); + decals.bloodtextureptr[6u] = loadTexture("blood/06.qoi"); + decals.bloodtextureptr[7u] = loadTexture("blood/07.qoi"); + decals.bloodtextureptr[8u] = loadTexture("blood/08.qoi"); + decals.bloodtextureptr[9u] = loadTexture("blood/09.qoi"); + decals.bloodtextureptr[10] = loadTexture("blood/10.qoi"); } struct Scores getScores(Game* game) diff --git a/src/cimport.zig b/src/cimport.zig index 88061db..05f9537 100644 --- a/src/cimport.zig +++ b/src/cimport.zig @@ -2,7 +2,6 @@ usingnamespace @cImport({ @cInclude("AL/al.h"); @cInclude("GL/gl.h"); @cInclude("GL/glu.h"); - @cInclude("lodepng.h"); @cInclude("Game.h"); @cInclude("Constants.h"); diff --git a/src/misc.zig b/src/misc.zig index 3e1ece0..3307713 100644 --- a/src/misc.zig +++ b/src/misc.zig @@ -39,6 +39,7 @@ const tokenize = std.mem.tokenize; const al = @import("zeal"); const gf = @import("gfz"); const ini = @import("ini"); +const qoi = @import("qoi"); const data_dir = @import("build_options").data_dir ++ [_]u8{ sep }; const c = @import("cimport.zig"); @@ -322,12 +323,9 @@ export fn loadTexture(filename: [*:0]const u8) c.GLuint { }) catch unreachable; defer allocator.free(file); - var data: [*c]u8 = undefined; - var w: c_uint = undefined; - var h: c_uint = undefined; - check(c.lodepng_error_text, - c.lodepng_decode32(&data, &w, &h, file.ptr, file.len)); - defer free(data); + var image = qoi.decodeBuffer(allocator, file) catch unreachable; + defer image.deinit(allocator); + const data = @ptrCast([*c]const u8, image.pixels.ptr); var texture: c.GLuint = undefined; c.glGenTextures(1, &texture); @@ -337,11 +335,11 @@ export fn loadTexture(filename: [*:0]const u8) c.GLuint { c.glTexParameteri(c.GL_TEXTURE_2D, c.GL_TEXTURE_MAG_FILTER, c.GL_LINEAR); c.glTexParameteri(c.GL_TEXTURE_2D, c.GL_TEXTURE_MIN_FILTER, c.GL_LINEAR); - const width = @intCast(c.GLint, w); - const height = @intCast(c.GLint, h); + const width = @intCast(c.GLint, image.width); + const height = @intCast(c.GLint, image.height); c.glPixelStorei(c.GL_UNPACK_ALIGNMENT, 1); c.glTexImage2D(c.GL_TEXTURE_2D, 0, 4, width, height, - 0, c.GL_RGBA, c.GL_UNSIGNED_BYTE, data); + 0, c.GL_RGBA, c.GL_UNSIGNED_BYTE, data); check(c.gluErrorString, c.gluBuild2DMipmaps(c.GL_TEXTURE_2D, 4, width, height, c.GL_RGBA, c.GL_UNSIGNED_BYTE, data)); |