#include "button.h" #include "cube.h" #include "player.h" #include "raylib.h" #include "screen.h" #include "wire.h" #include #include static bool level_started = false; void DrawLevel00(Player *player) { static Button button = { .position = (Vector3){0.0f, 0.0f, -5.0f}, .length = 1.0f, .height = 0.1f, .colorEnabled = GREEN, .colorDisabled = RED, .wiresColor = BLACK, .pressed = false, }; static Wire wire = { .power = &button, .colorEnabled = GREEN, .colorDisabled = BLACK, }; static Cube cube = { .position = (Vector3){0.0f, 0.5f, 0.0f}, .minY = 0.4f + 0.01f, .edge = 0.8f, .color = RED, .wiresColor = BLACK, .grabbed = false, }; if (!level_started) { level_started = true; cube.model = LoadModelFromMesh(GenMeshCube(cube.edge, cube.edge, cube.edge)); float wireW = 0.1f; float wireH = 0.1f; float wireL = 5.0f; float wireZ = button.position.z - wireL / 2.0f - button.length / 2.0f; Vector3 wirePos = {0.0f, wireH / 2.0f, wireZ}; WireAppend(&wire, wirePos, wireW, wireH, wireL); wireZ -= wireL / 2.0f; wireW = 5.0f; wireH = 0.1f; wireL = 0.1f; wirePos = (Vector3){wireW / 2.0f, wireH / 2.0f, wireZ}; WireAppend(&wire, wirePos, wireW, wireH, wireL); } const int floorExtent = 25; const float tileSize = 5.0f; // Draw floor for (int y = -floorExtent; y < floorExtent; y++) { for (int x = -floorExtent; x < floorExtent; x++) { if ((y & 1) ^ (x & 1)) { DrawPlane((Vector3){x * tileSize, 0.0f, y * tileSize}, (Vector2){tileSize, tileSize}, LIGHTGRAY); } } } DrawCube((Vector3){-16.0f, 2.5f, 0.0f}, 1.0f, 5.0f, 32.0f, BLUE); // Draw a blue wall DrawCube((Vector3){16.0f, 2.5f, 0.0f}, 1.0f, 5.0f, 32.0f, GREEN); // Draw a green wall DrawCube((Vector3){0.0f, 2.5f, 16.0f}, 32.0f, 5.0f, 1.0f, YELLOW); // Draw a yellow wall UpdateGrab(player, &cube); // Check if we grabbed a cube MyDrawCube(&cube); // Draw a cube DrawButton(&button, &cube); // Draw a button DrawWire(&wire); // Draw a wire }