From dd801873deb5f3e4dc3f255cf5dd10a1550f17f1 Mon Sep 17 00:00:00 2001 From: Fries Date: Sun, 21 Apr 2024 21:12:49 -0700 Subject: [PATCH] Write a python script to generate byte arrays. This is preparing for textures for the Flappy Bird clone. --- src/flappyBird/Assets.hh | 7 +++ src/flappyBird/assets/yellowbird-downflap.png | Bin 0 -> 426 bytes src/flappyBird/generateAssets.py | 41 ++++++++++++++++++ src/flappyBird/meson.build | 5 ++- 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 src/flappyBird/Assets.hh create mode 100644 src/flappyBird/assets/yellowbird-downflap.png create mode 100644 src/flappyBird/generateAssets.py diff --git a/src/flappyBird/Assets.hh b/src/flappyBird/Assets.hh new file mode 100644 index 0000000..903e2c7 --- /dev/null +++ b/src/flappyBird/Assets.hh @@ -0,0 +1,7 @@ +#ifndef ASSETS_HH +#define ASSETS_HH +#include +namespace assets { + std::vector bird(); +} +#endif diff --git a/src/flappyBird/assets/yellowbird-downflap.png b/src/flappyBird/assets/yellowbird-downflap.png new file mode 100644 index 0000000000000000000000000000000000000000..e9e1c77b9deb38738f6f4d184243143bca2da46b GIT binary patch literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^N0k@DU)Otn z{rdG|yYcmBXZ~0)JZRAQ|NsAjlBe20X~vQuzhDN3XE)M7oFs2|7ml`jQ>%a+&H|6f zVg?3oVGw3ym^DWND9B#o>Fdh=n3;!xN%;9M)g3^gEKe855Q)pZ7Xx_@DDbdch_c|` z+Rz#`qc!rtzdq>=sjVsBUE?z}5|%k^4ByAJ!`ka$T!g!ToEOuzDa{u&IhFo(WoYXz zDx9oRkXI(;$Etnt%hpG8VzmpM7VpkfwA$Ns>~Px5;^<#p`}Q%EMVg;vcHSliv{kjl zHKHUXu_Vlzw{7+P2v7+D!wY8#kY85lg&vOJ8UAvZrIGp!Q0 Uh6&}3^*{{_p00i_>zopr0M`A6wg3PC literal 0 HcmV?d00001 diff --git a/src/flappyBird/generateAssets.py b/src/flappyBird/generateAssets.py new file mode 100644 index 0000000..a67cb8a --- /dev/null +++ b/src/flappyBird/generateAssets.py @@ -0,0 +1,41 @@ +import argparse +from pathlib import Path +from PIL import Image + +parser = argparse.ArgumentParser() +parser.add_argument("function") +parser.add_argument("input") +parser.add_argument("output") + +args = parser.parse_args() + +function = args.function +input = Path(args.input) +output = Path(args.output) + +if not input.exists(): + print("Input " + str(path.absolute()) + " not found.") + raise SystemExit(1) + +hexList = list() + +with Image.open(input) as image: + imageBytes = bytes(image.getdata()) + byteList = list(imageBytes) + + for byte in byteList: + hexList.append(f'0x{byte:02x}') + + +code = f"""#include +#include + +namespace assets {{ +std::vector {function}() {{ + return {{ {','.join(hexList)} }}; +}} +}} +""" + +with open(output, 'w') as f: + f.write(code) diff --git a/src/flappyBird/meson.build b/src/flappyBird/meson.build index bbc3d39..7f71c8e 100644 --- a/src/flappyBird/meson.build +++ b/src/flappyBird/meson.build @@ -5,5 +5,8 @@ flappy_sources = [ 'MainMenu.cc' ] -flappy_bird = static_library('flappyBird', flappy_sources, dependencies: deps, include_directories: incdirs) +python3 = find_program('python3') +bird = custom_target('bird', output: 'birdSprite.cc', input: ['generateAssets.py', 'assets/yellowbird-downflap.png'], command: [python3, '@INPUT0@', 'bird', '@INPUT1@', '@OUTPUT@']) + +flappy_bird = static_library('flappyBird', [flappy_sources, bird], dependencies: deps, include_directories: incdirs) flappy_dep = declare_dependency(link_with: [flappy_bird], include_directories: incdirs)