NEWS: Welcome to my new homepage! <3

tile.c - freezo - A retro platform game

freezo

A retro platform game
git clone git://192.168.2.2/freezo
Log | Files | Refs | README

tile.c (2705B)


      1 #include <stdlib.h>
      2 
      3 #include "entity.h"
      4 #include "tile.h"
      5 #include "const.h"
      6 #include "util.h"
      7 
      8 /* ########################################################################## */
      9 /* # Tile                                                                   # */
     10 /* ########################################################################## */
     11 
     12 tile_t *tile_create(pos_t pos, tile_e type) {
     13   tile_t *tile = malloc(sizeof(tile_t));
     14   tile->pos = pos;
     15   tile->type = type;
     16   return tile;
     17 }
     18 
     19 void tile_update(tile_t *tile, game_t *game) {
     20   UNUSED(tile);
     21   UNUSED(game);
     22 }
     23 
     24 void tile_draw(tile_t *tile, game_t *game) {
     25   switch (tile->type) {
     26     case TILE_AIR: {
     27       break;
     28     }
     29     case TILE_STONE: {
     30       DrawTextureRec(game->assets.tiles, texture_rect(0, 0, TILE_WIDTH, TILE_HEIGHT), tile->pos, WHITE);
     31       break;
     32     }
     33     case TILE_STONE_JOINT: {
     34       DrawTextureRec(game->assets.tiles, texture_rect(1, 0, TILE_WIDTH, TILE_HEIGHT), tile->pos, WHITE);
     35       break;
     36     }
     37     case TILE_STONE_WALL: {
     38       DrawTextureRec(game->assets.tiles, texture_rect(2, 0, TILE_WIDTH, TILE_HEIGHT), tile->pos, WHITE);
     39       break;
     40     }
     41     case TILE_GRASS: {
     42       DrawTextureRec(game->assets.tiles, texture_rect(3, 0, TILE_WIDTH, TILE_HEIGHT), tile->pos, WHITE);
     43       break;
     44     }
     45     case TILE_WOOD_PLATFORM: {
     46       DrawTextureRec(game->assets.tiles, texture_rect(4, 0, TILE_WIDTH, TILE_HEIGHT), tile->pos, WHITE);
     47       break;
     48     }
     49     case TILE_SNOW: {
     50       DrawTextureRec(game->assets.tiles, texture_rect(5, 0, TILE_WIDTH, TILE_HEIGHT), tile->pos, WHITE);
     51       break;
     52     }
     53     case TILE_SAND: {
     54       DrawTextureRec(game->assets.tiles, texture_rect(6, 0, TILE_WIDTH, TILE_HEIGHT), tile->pos, WHITE);
     55       break;
     56     }
     57   }
     58 }
     59 
     60 tile_t *tile_get(game_t *game, int x, int y) {
     61   for (int i = 0; i < game->tiles_len; i++) {
     62     tile_t *tile = game->tiles[i];
     63     if (x >= tile->pos.x && x <= tile->pos.x + TILE_WIDTH) {
     64       if (y >= tile->pos.y && y <= tile->pos.y + TILE_HEIGHT) {
     65         return tile;
     66       }
     67     }
     68   }
     69   return NULL;
     70 }
     71 
     72 bool tile_ground(tile_t *tile) {
     73   switch (tile->type) {
     74     case TILE_STONE:
     75     case TILE_GRASS:
     76     case TILE_WOOD_PLATFORM:
     77     case TILE_STONE_JOINT:
     78     case TILE_SNOW:
     79     case TILE_SAND:
     80       return true;
     81     default:
     82       return false;
     83   }
     84 }
     85 
     86 bool tile_solid(tile_t *tile) {
     87   switch (tile->type) {
     88     case TILE_STONE:
     89     case TILE_GRASS:
     90     case TILE_STONE_JOINT:
     91     case TILE_SNOW:
     92     case TILE_SAND:
     93       return true;
     94     default:
     95       return false;
     96   }
     97 }
     98 
     99 bool tile_wall(tile_t *tile) {
    100   switch (tile->type) {
    101     case TILE_STONE_WALL:
    102       return true;
    103     default:
    104       return false;
    105   }
    106 }
    107 
    108 void tile_free(tile_t *tile) {
    109   free(tile);
    110 }