// Copyright (c) 2014 Alex Diener. All rights reserved. #ifndef __SharedDefinitions_H__ #define __SharedDefinitions_H__ #ifdef __cplusplus extern "C" { #endif #include "gamemath/Vector2i.h" #include "gamemath/Vector2f.h" #include #define FRAMES_PER_SECOND 60 #define FRAME_INTERVAL (1.0 / FRAMES_PER_SECOND) #define MENU_COLOR_ENABLED COLOR4f(0.0f, 0.0f, 0.0f, 1.0f) #define MENU_COLOR_DISABLED COLOR4f(0.5f, 0.5f, 0.5f, 0.5f) #define MENU_COLOR_HIGHLIGHTED COLOR4f(0.25f, 0.25f, 1.0f, 1.0f) #define MENU_COLOR_SELECTED COLOR4f(1.0f, 0.0f, 0.0f, 1.0f) #define MENU_COLOR_NONINTERACTIVE COLOR4f(0.0f, 0.0f, 0.0f, 1.0f) #define MENU_COLOR_ERROR COLOR4f(1.0f, 0.0f, 0.0f, 1.0f) typedef short fixed8_8; typedef enum direction4 { DIRECTION_LEFT = 0, DIRECTION_RIGHT = 1, DIRECTION_UP = 2, DIRECTION_DOWN = 3 } direction4; struct rect4f { float left; float right; float top; float bottom; }; typedef struct rect4f rect4f; #define RECT4f(left, right, top, bottom) ((rect4f) {left, right, top, bottom}) struct blockRef { Vector2i tilePosition; struct blockRef * nextBlock; }; typedef struct blockRef blockRef; static inline direction4 direction4_opposite(direction4 direction) { switch (direction) { case DIRECTION_LEFT: return DIRECTION_RIGHT; case DIRECTION_RIGHT: return DIRECTION_LEFT; case DIRECTION_DOWN: return DIRECTION_UP; case DIRECTION_UP: return DIRECTION_DOWN; default: return -1; } } static inline bool rectsIntersect(rect4f lhs, rect4f rhs) { return lhs.left < rhs.right && lhs.right > rhs.left && lhs.top < rhs.bottom && lhs.bottom > rhs.top; } #ifdef __cplusplus } #endif #endif