#ifndef YABS_CORE_H #define YABS_CORE_H /*********************************/ /* YABS ( // */ /* yabs_CORE ( )/ */ /* by salade )(/ */ /* ________________ ( /) */ /* ()__)____________))))) :^} */ /*********************************/ #include "raylib.h" #include "raymath.h" #include #ifdef __FreeBSD__ # define YABS_SCREENWIDTH 1280 # define YABS_SCREENHEIGHT 720 #else # define YABS_SCREENWIDTH 1600 # define YABS_SCREENHEIGHT 900 #endif #define YABS_TITLE "YABS" #define YABS_DOUBLEPI 6.28318530717958647692f // half sizes are reduced by 5 pixels to be centered #define YABS_HALFSWIDTH (YABS_SCREENWIDTH/2) - 15 #define YABS_HALFSHEIGHT (YABS_SCREENHEIGHT/2) - 10 // movement sensibility: lower is faster #define YABS_PLAYER_MOVEMENT_SENSITIVITY 3 #define YABS_CAMERA_MOUSE_MOVE_SENSITIVITY 0.0005f #define YABS_GROUND_LEVEL 1.0f #define YABS_CROSSHAIR_TEX "meta/media/img/crosshair.png" #define ENEMIES_N 10 #define YABS_COOLPURPLE \ CLITERAL(Color) { 153, 0, 0, 255 } // cool Purple namespace yabs { typedef struct Scene3D { Camera camera; Vector3 movement; Vector3 rotation; Vector2 lastMousePos; } Scene3D; typedef enum gameState { TITLE = 0, PICK, DEATH, GAMEPLAY, NEXT, ENDING } gameState; // core functions and structs namespace core { typedef struct Player { int hp; Vector3 pos; }Player; typedef struct Enemy { Vector3 enemyStartPos; Vector3 enemyBoxPos; Vector3 enemyBoxSize; BoundingBox enemyBounds; bool active; } Enemy; typedef struct World { Model & ground; std::vector enemies; Player * player; } World; int reset_camera(Scene3D& scene_3d); int draw(World& world); int tick(World& world, Scene3D& scene_3d); void init_game(); void cleanupAndExit(World & world); } // namespace core } // namespace yabs #endif /* YABS_CORE_H */