Compare commits
No commits in common. "15b16071c911d0b88fcfcababf6935a4cb8df4f5" and "dd801873deb5f3e4dc3f255cf5dd10a1550f17f1" have entirely different histories.
15b16071c9
...
dd801873de
10 changed files with 15 additions and 86 deletions
29
.vscode/launch.json
vendored
29
.vscode/launch.json
vendored
|
@ -187,35 +187,6 @@
|
||||||
],
|
],
|
||||||
"avoidWindowsConsoleRedirection": false,
|
"avoidWindowsConsoleRedirection": false,
|
||||||
"internalConsoleOptions": "openOnSessionStart"
|
"internalConsoleOptions": "openOnSessionStart"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "(gdb, lxdream-nitro) Launch flappyBird.elf",
|
|
||||||
"type": "cppdbg",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceFolder}/build/src/flappyBird.elf",
|
|
||||||
"args": [],
|
|
||||||
"stopAtEntry": false,
|
|
||||||
"cwd": "${workspaceFolder}",
|
|
||||||
"environment": [],
|
|
||||||
"externalConsole": false,
|
|
||||||
"MIMode": "gdb",
|
|
||||||
"miDebuggerPath": "/opt/toolchains/dc/sh-elf/bin/sh-elf-gdb",
|
|
||||||
"miDebuggerServerAddress": "localhost:3263",
|
|
||||||
"debugServerPath": "/home/user/Downloads/lxdream-nitro/builddir/lxdream-nitro",
|
|
||||||
"debugServerArgs": "-d -g 3263 -e ${workspaceFolder}/build/src/flappyBird.elf",
|
|
||||||
"setupCommands": [
|
|
||||||
{
|
|
||||||
"description": "Enable pretty-printing for gdb",
|
|
||||||
"text": "-enable-pretty-printing",
|
|
||||||
"ignoreFailures": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Set SuperH architechture",
|
|
||||||
"text": "set architecture sh4"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"avoidWindowsConsoleRedirection": false,
|
|
||||||
"internalConsoleOptions": "openOnSessionStart"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@ public:
|
||||||
std::vector<Entity*> children = {};
|
std::vector<Entity*> children = {};
|
||||||
virtual void Draw() {};
|
virtual void Draw() {};
|
||||||
virtual void Update() {};
|
virtual void Update() {};
|
||||||
virtual void Start() {};
|
|
||||||
bool b_destroyed = false;
|
bool b_destroyed = false;
|
||||||
Vector3 GetPosition() const;
|
Vector3 GetPosition() const;
|
||||||
Vector3 GetGlobalPosition() const;
|
Vector3 GetGlobalPosition() const;
|
||||||
|
|
|
@ -2,11 +2,6 @@
|
||||||
#define ASSETS_HH
|
#define ASSETS_HH
|
||||||
#include <vector>
|
#include <vector>
|
||||||
namespace assets {
|
namespace assets {
|
||||||
struct Image {
|
std::vector<unsigned char> bird();
|
||||||
int width;
|
|
||||||
int height;
|
|
||||||
std::vector<unsigned char> data;
|
|
||||||
};
|
|
||||||
extern Image bird;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,29 +1,22 @@
|
||||||
#include "Bird.hh"
|
#include "Bird.hh"
|
||||||
#include "Assets.hh"
|
|
||||||
#include <GL/gl.h>
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
void Bird::Draw() {
|
void Bird::Draw() {
|
||||||
engine::Vector3 one = {-1.0, -1.0, 0.0};
|
engine::Vector3 one = {-1.0, -1.0, 0.0};
|
||||||
engine::Vector3 two = {0.0, 1.0, 0.0};
|
engine::Vector3 two = {0.0, 1.0, 0.0};
|
||||||
engine::Vector3 three = {1.0, -1.0, 0.0f};
|
engine::Vector3 three = {1.0, -1.0, 0.0f};
|
||||||
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
glBegin(GL_TRIANGLES);
|
glBegin(GL_TRIANGLES);
|
||||||
// glColor3f(1.0f, 0.0f, 0.0f);
|
glColor3f(1.0f, 0.0f, 0.0f);
|
||||||
glTexCoord2f(0.0f, 0.0f);
|
|
||||||
glVertex3fv((float*)&(one));
|
glVertex3fv((float*)&(one));
|
||||||
|
|
||||||
// glColor3f(0.0f, 1.0f, 0.0f);
|
glColor3f(0.0f, 1.0f, 0.0f);
|
||||||
glTexCoord2f(1.0f, 0.0f);
|
|
||||||
glVertex3fv((float*)&two);
|
glVertex3fv((float*)&two);
|
||||||
|
|
||||||
// glColor3f(0.0f, 0.0f, 1.0f);
|
glColor3f(0.0f, 0.0f, 1.0f);
|
||||||
glTexCoord2f(0.5f, 1.0f);
|
|
||||||
glVertex3fv((float*)&three);
|
glVertex3fv((float*)&three);
|
||||||
glEnd();
|
glEnd();
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bird::Update() {
|
void Bird::Update() {
|
||||||
|
@ -70,17 +63,3 @@ Bird::Bird(engine::Engine* engie, engine::Entity* parent, PipesContainer* pipes)
|
||||||
: Entity(engie, parent) {
|
: Entity(engie, parent) {
|
||||||
this->pipes = pipes;
|
this->pipes = pipes;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bird::Start() {
|
|
||||||
auto bird = assets::bird;
|
|
||||||
|
|
||||||
glGenTextures(1, &ui_birdTexture);
|
|
||||||
glBindTexture(GL_TEXTURE_2D, ui_birdTexture);
|
|
||||||
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
|
||||||
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bird.width, bird.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, bird.data.data());
|
|
||||||
}
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ class Bird : public engine::Entity {
|
||||||
public:
|
public:
|
||||||
void Draw() override;
|
void Draw() override;
|
||||||
void Update() override;
|
void Update() override;
|
||||||
void Start() override;
|
|
||||||
Bird(engine::Engine* engie, engine::Entity* parent, PipesContainer* pipes);
|
Bird(engine::Engine* engie, engine::Entity* parent, PipesContainer* pipes);
|
||||||
bool b_isHit = false;
|
bool b_isHit = false;
|
||||||
|
|
||||||
|
@ -16,6 +15,5 @@ class Bird : public engine::Entity {
|
||||||
static constexpr float JUMP_CONST = 0.5;
|
static constexpr float JUMP_CONST = 0.5;
|
||||||
float f_verticalSpeed = JUMP_CONST;
|
float f_verticalSpeed = JUMP_CONST;
|
||||||
PipesContainer *pipes = nullptr;
|
PipesContainer *pipes = nullptr;
|
||||||
unsigned int ui_birdTexture = 0;
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -105,7 +105,3 @@ FlappyBird::~FlappyBird()
|
||||||
p_thread->detach();
|
p_thread->detach();
|
||||||
delete p_thread;
|
delete p_thread;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlappyBird::Start() {
|
|
||||||
p_bird->Start();
|
|
||||||
}
|
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
|
|
||||||
class FlappyBird : public engine::Engine {
|
class FlappyBird : public engine::Engine {
|
||||||
void GameLoop() override;
|
void GameLoop() override;
|
||||||
void Start() override;
|
|
||||||
void SpawnPipes();
|
void SpawnPipes();
|
||||||
void MainGameLoop();
|
void MainGameLoop();
|
||||||
void MainMenuLoop();
|
void MainMenuLoop();
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 426 B |
23
src/flappyBird/generateAssets.py
Executable file → Normal file
23
src/flappyBird/generateAssets.py
Executable file → Normal file
|
@ -1,32 +1,27 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
import argparse
|
import argparse
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument("variable")
|
parser.add_argument("function")
|
||||||
parser.add_argument("input")
|
parser.add_argument("input")
|
||||||
parser.add_argument("output")
|
parser.add_argument("output")
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
variable = args.variable
|
function = args.function
|
||||||
input = Path(args.input)
|
input = Path(args.input)
|
||||||
output = Path(args.output)
|
output = Path(args.output)
|
||||||
|
|
||||||
if not input.exists():
|
if not input.exists():
|
||||||
print("Input " + str(input.absolute()) + " not found.")
|
print("Input " + str(path.absolute()) + " not found.")
|
||||||
raise SystemExit(1)
|
raise SystemExit(1)
|
||||||
|
|
||||||
hexList = list()
|
hexList = list()
|
||||||
imageWidth = 0
|
|
||||||
imageHeight = 0
|
|
||||||
|
|
||||||
with Image.open(input) as image:
|
with Image.open(input) as image:
|
||||||
imageWidth = image.width
|
imageBytes = bytes(image.getdata())
|
||||||
imageHeight = image.height
|
byteList = list(imageBytes)
|
||||||
# flatten a tuple of RGBA bytes into a list of bytes
|
|
||||||
byteList = [item for tup in [*image.getdata()] for item in tup]
|
|
||||||
|
|
||||||
for byte in byteList:
|
for byte in byteList:
|
||||||
hexList.append(f'0x{byte:02x}')
|
hexList.append(f'0x{byte:02x}')
|
||||||
|
@ -36,11 +31,9 @@ code = f"""#include <Assets.hh>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace assets {{
|
namespace assets {{
|
||||||
Image {variable} = {{
|
std::vector<unsigned char> {function}() {{
|
||||||
.width = {imageWidth},
|
return {{ {','.join(hexList)} }};
|
||||||
.height = {imageHeight},
|
}}
|
||||||
.data = {{ {','.join(hexList)} }}
|
|
||||||
}};
|
|
||||||
}}
|
}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,8 @@ flappy_sources = [
|
||||||
'MainMenu.cc'
|
'MainMenu.cc'
|
||||||
]
|
]
|
||||||
|
|
||||||
assets = find_program('generateAssets.py')
|
python3 = find_program('python3')
|
||||||
asset_gen = generator(assets, output: '@BASENAME@.cc', arguments: ['@EXTRA_ARGS@', '@INPUT@', '@OUTPUT@'])
|
bird = custom_target('bird', output: 'birdSprite.cc', input: ['generateAssets.py', 'assets/yellowbird-downflap.png'], command: [python3, '@INPUT0@', 'bird', '@INPUT1@', '@OUTPUT@'])
|
||||||
bird = asset_gen.process('assets/yellowbird-downflap.png', extra_args: ['bird'])
|
|
||||||
|
|
||||||
flappy_bird = static_library('flappyBird', [flappy_sources, bird], dependencies: deps, include_directories: incdirs)
|
flappy_bird = static_library('flappyBird', [flappy_sources, bird], dependencies: deps, include_directories: incdirs)
|
||||||
flappy_dep = declare_dependency(link_with: [flappy_bird], include_directories: incdirs)
|
flappy_dep = declare_dependency(link_with: [flappy_bird], include_directories: incdirs)
|
||||||
|
|
Loading…
Reference in a new issue