#include #include #include #include "world.h" #include "globals.h" #include "player.h" Color colors[7] = { GREEN, BLUE, RED, YELLOW, ORANGE, PURPLE, WHITE }; void drawWorld(World *world) { int cubeMaterial; Color cubeColor; for (int x=0;xmap[y][x][z]; switch (cubeMaterial) { case 1 ... 7: cubeColor=colors[cubeMaterial-1]; draw: DrawCube( (Vector3){ (float)x, (float)y, (float)z }, 1.0f, 1.0f, 1.0f, cubeColor ); DrawCubeWires( (Vector3){ (float)x, (float)y, (float)z }, 1.0f, 1.0f, 1.0f, BLACK ); break; } } } void handleCollision(World *world, Player *player) { int posX, posY, posZ; posX = (int)player->pos.x; posY = (int)player->pos.y; posZ = (int)player->pos.z; //Floor check: if (world->map[posY][posX][posZ]!=0) { player->is_on_floor=1; if (player->velocity.y < 0.0f) { player->velocity.y = 0.0f; } } else { player->is_on_floor=0; } if (world->map[posY][posX][posZ]!=0 && (float)posY!=player->pos.y) { player->camera.position.y=(float)posY+2; //player->velocity.y = 0.0f; } } void handleGravity(World *world, Player *player) { if (player->velocity.y > 0.0f) { player->velocity.y *= 0.9f; } if (player->velocity.y <= 0.1f && player->velocity.y > 0.0f) { player->velocity.y = 0.0f; } int posX, posY, posZ; posX = (int)player->pos.x; posY = (int)player->pos.y; posZ = (int)player->pos.z; printf( "Player.pos.y:\t%d\n" "Player.pos.x:\t%d\n" "Player.pos.z:\t%d\n", posY, posX, posZ ); printf("%d\n", (int)world->map[posY][posX][posZ]); if (player->velocity.y <= 0.0f && world->map[posY][posX][posZ]==0) { player->velocity.y -= 0.1f; } }