diff options
Diffstat (limited to 'teensy')
| -rw-r--r-- | teensy/teensy.h | 61 |
1 files changed, 52 insertions, 9 deletions
diff --git a/teensy/teensy.h b/teensy/teensy.h index b50bac7..346d9eb 100644 --- a/teensy/teensy.h +++ b/teensy/teensy.h @@ -31,6 +31,7 @@ #define TY_COLOR_GRAY ty_color(128, 128, 128) // Virtual controller. Keyboard keys are also mapped to this. +typedef uint8_t ty_Button; enum { TY_BTN_LEFT_UP, // D-pad #1 up TY_BTN_LEFT_DOWN, // D-pad #1 down @@ -47,7 +48,8 @@ enum { TY_BTN_ACTION_3, // X TY_BTN_ACTION_4, // Y - // for use in the editor + // For use in the editor + TY_BTN_DB_CTRL, TY_BTN_DB_SHIFT, TY_BTN_DB_LMB, @@ -56,8 +58,9 @@ enum { TY_BTN_COUNT, }; -typedef uint8_t ty_Button; +// Tells Teensy what your preferred settings would be. Some settings may not +// always be accurately followed, hence they are hints. typedef struct { int scr_width; int scr_height; @@ -65,22 +68,26 @@ typedef struct { int ticrate; } ty_Hints; +// Represents an RGB8 color. typedef struct { uint8_t r; uint8_t g; uint8_t b; } ty_Color; +// Floating-point 2D vector. typedef struct { float x; float y; } ty_Vec2; +// Fixed-point 2D vector. typedef struct { int x; int y; } ty_Vec2i; +// Floating-point 2D rectangle. typedef struct { float x; float y; @@ -88,6 +95,7 @@ typedef struct { float h; } ty_Rect; +// Fixed-point 2D rectangle. typedef struct { int x; int y; @@ -95,12 +103,16 @@ typedef struct { int h; } ty_Recti; +// Stores an image in RGB8 format. When drawing, any texel of the color #FF00FF +// will be interpreted as transparent. typedef struct { ty_Color *data; int width; int height; } ty_Image; +// Stores a list of images that map to ASCII characters. The only required +// character is a space (0x20) since it determines the height of the font. typedef struct { ty_Image glyphs[CHAR_MAX]; } ty_Font; @@ -108,75 +120,106 @@ typedef struct { void ty_init(ty_Hints hints); void ty_deinit(void); -// If the button is being held down +// Returns whether a button is being pressed or not. bool ty_button_down(ty_Button btn); -// If the button was pressed just now +// Returns whether a button was pressed down this frame or not. bool ty_button_pressed(ty_Button btn); -// Gets the mouse position; should only be used as debug or dev tools +// Gets the mouse position; intended to be used as debug or dev tools. ty_Vec2i ty_mouse_pos(void); // Whether or not the main loop should continue executing. bool ty_is_game_running(void); -// Gets the real time that the game has been running. +// Gets the real time in seconds that the game has been running. double ty_get_time(void); -// Handle events, tick game logic, etc. Returns the amount of times you should -// tic. +// Handle events, game logic, etc. Returns the amount of times you should tic. int ty_tick(void); +// Takes in a string format and a va_list and returns a TEMPORARILY ALLOCATED +// formatted string. char *ty_format_args(const char *fmt, va_list list); +// Takes in a string format and returns a TEMPORARILY ALLOCATED formatted +// string. char *ty_format(const char *fmt, ...); +// Checks if a point is within a fixed-point rect. bool ty_pointi_in_recti(ty_Vec2i point, ty_Recti rect); +// Checks if a point is within a floating-point rect. bool ty_point_in_rect(ty_Vec2 point, ty_Rect rect); +// Creates an image using the relevant data (formatted in RGB8). You may free +// the passed data after this call as it is copied. ty_Image ty_create_image(int w, int h, const ty_Color* data); void ty_free_image(ty_Image img); +// Returns the specified pixel color on an image. Will emit a fatal error if an +// index is made out of bounds. ty_Color ty_img_get_pixel(ty_Image img, ty_Vec2i pos); +// Sets a pixel to a color. Will emit a fatal error if an index is made out of +// bounds. void ty_img_set_pixel( ty_Image img, ty_Vec2i pos, ty_Color color ); +// Adds a glyph to a font. The glyph is an ASCII character. void ty_font_add_glyph(ty_Font *font, uint8_t c, ty_Image img); +// Calculates the length, in pixels, of the string when drawn with a font. int ty_font_width(const ty_Font *font, const char *fmt, ...); -// Pass NULL to restore the screen. +// Sets the image that the renderer draws to. Pass NULL to restore the screen. void ty_draw_set_target(const ty_Image *img); +// Sets the entire render target to one color. void ty_draw_clear(ty_Color col); +// Draws an image at the specified position. The color #FF00FF will be ignored +// and not drawn. void ty_draw_image(ty_Image img, ty_Vec2i pos); +// Draws a portion of the image to the specified destination rect on the render +// target. The color #FF00FF will be ignored and not drawn. void ty_draw_image_ex( ty_Image img, ty_Recti src, ty_Recti dst ); +// Draws an image with a rotation. The color #FF00FF will be ignored and not +// drawn. void ty_draw_image_rot( ty_Image img, ty_Vec2i pos, ty_Vec2i offset, double rot ); + +// Draws a axis-aligned rectangle onto the render target. void ty_draw_rect(ty_Recti rect, ty_Color color); +// Draws a line to the render target. void ty_draw_line( ty_Vec2i start, ty_Vec2i end, ty_Color color ); + +// Draws text using to the screen, using a specific font. void ty_draw_text(const ty_Font *font, ty_Vec2i pos, const char *text); +// Draws formatted text with arguments from a va_list using to the screen, using +// a specific font. void ty_draw_text_args( const ty_Font *font, ty_Vec2i pos, const char *fmt, va_list args ); +// Draws formatted text using to the screen, using a specific font. void ty_draw_text_fmt( const ty_Font *font, ty_Vec2i pos, const char *fmt, ... ); + +// Finalizes any rendering done. void ty_draw_end(void); +// Pause execution of the game for the amount of time passed in milliseconds. void ty_sleep(uint64_t ms); #endif // TEENSY_H_ |
