2023-08-02 10:59:06 +00:00
|
|
|
#ifndef JUMPARTIFACT_DOT_COM_DEMO_0_TANK_RUNNER_H_
|
|
|
|
#define JUMPARTIFACT_DOT_COM_DEMO_0_TANK_RUNNER_H_
|
|
|
|
|
|
|
|
#include "screen.h"
|
|
|
|
|
|
|
|
// standard library includes
|
|
|
|
#include <array>
|
|
|
|
#include <bitset>
|
2023-08-08 02:33:07 +00:00
|
|
|
#include <optional>
|
2023-08-02 10:59:06 +00:00
|
|
|
|
|
|
|
// third party includes
|
|
|
|
#include <raylib.h>
|
|
|
|
|
2023-08-07 05:11:58 +00:00
|
|
|
constexpr float POS_VALUE_INC_RATE = 0.2F;
|
2023-08-07 03:54:23 +00:00
|
|
|
constexpr float CAMERA_UPDATE_RATE = 1.0F;
|
2023-08-02 10:59:06 +00:00
|
|
|
|
2023-08-08 02:33:07 +00:00
|
|
|
constexpr unsigned int SURFACE_UNIT_WIDTH = 51;
|
|
|
|
constexpr unsigned int SURFACE_UNIT_HEIGHT = 51;
|
|
|
|
|
|
|
|
constexpr float SURFACE_X_OFFSET = (float)SURFACE_UNIT_WIDTH / 2.0F;
|
|
|
|
constexpr float SURFACE_Y_OFFSET = (float)SURFACE_UNIT_HEIGHT / 2.0F;
|
|
|
|
|
|
|
|
constexpr float SURFACE_HEIGHT_INTERVAL = 0.5F;
|
|
|
|
|
2023-08-02 10:59:06 +00:00
|
|
|
class TRunnerScreen : public Screen {
|
|
|
|
public:
|
|
|
|
TRunnerScreen(std::weak_ptr<ScreenStack> stack);
|
|
|
|
~TRunnerScreen() override;
|
|
|
|
|
|
|
|
bool update(float dt) override;
|
|
|
|
bool draw() override;
|
|
|
|
|
|
|
|
private:
|
|
|
|
enum Pixel : unsigned char {
|
|
|
|
PIXEL_BLANK,
|
|
|
|
PIXEL_BLACK,
|
|
|
|
PIXEL_RED,
|
|
|
|
PIXEL_GREEN,
|
|
|
|
PIXEL_BLUE,
|
|
|
|
PIXEL_YELLOW,
|
|
|
|
PIXEL_CYAN,
|
|
|
|
PIXEL_MAGENTA,
|
|
|
|
PIXEL_ORANGE,
|
|
|
|
PIXEL_BROWN,
|
|
|
|
PIXEL_TURQUOISE,
|
|
|
|
PIXEL_SKY,
|
|
|
|
PIXEL_WHITE
|
|
|
|
};
|
|
|
|
|
2023-08-08 02:33:07 +00:00
|
|
|
struct SurfaceUnit {
|
|
|
|
float nw, ne, sw, se;
|
|
|
|
};
|
|
|
|
|
2023-08-02 10:59:06 +00:00
|
|
|
static Color PixelToColor(Pixel p);
|
|
|
|
|
2023-08-08 02:33:07 +00:00
|
|
|
std::array<std::optional<SurfaceUnit>,
|
|
|
|
SURFACE_UNIT_WIDTH * SURFACE_UNIT_HEIGHT>
|
|
|
|
surface;
|
2023-08-07 03:54:23 +00:00
|
|
|
Camera3D camera;
|
2023-08-02 10:59:06 +00:00
|
|
|
std::bitset<64> flags;
|
2023-08-04 05:32:05 +00:00
|
|
|
Model TEMP_cube_model;
|
|
|
|
Texture2D TEMP_cube_texture;
|
2023-08-02 10:59:06 +00:00
|
|
|
Matrix TEMP_matrix;
|
2023-08-07 03:54:23 +00:00
|
|
|
Vector3 camera_pos;
|
|
|
|
Vector3 camera_target;
|
|
|
|
float pos_value;
|
2023-08-07 05:11:58 +00:00
|
|
|
float mouse_px;
|
|
|
|
float mouse_pz;
|
2023-08-07 03:54:23 +00:00
|
|
|
|
|
|
|
void camera_to_targets(float dt);
|
2023-08-02 10:59:06 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|