94 lines
2.2 KiB
Plaintext
94 lines
2.2 KiB
Plaintext
import "raylib";
|
|
|
|
Tile :: struct {
|
|
value: int;
|
|
}
|
|
|
|
Map :: struct {
|
|
tiles: *Tile;
|
|
x: int;
|
|
y: int;
|
|
}
|
|
|
|
CreateMap :: proc(x: int, y: int, map: *int): Map {
|
|
result: Map = {x = x, y = y};
|
|
result.tiles = MemAlloc(:uint(x*y) * sizeof(:Tile));
|
|
|
|
for i := 0; i < x*y; i += 1 {
|
|
result.tiles[i].value = map[i];
|
|
}
|
|
return result;
|
|
}
|
|
|
|
main :: proc(): int {
|
|
TestArena();
|
|
return 0;
|
|
InitWindow(800, 600, "Thing");
|
|
SetTargetFPS(60);
|
|
|
|
XPIX :: 32;
|
|
YPIX :: 32;
|
|
|
|
camera: Camera2D = {
|
|
zoom = 1.0,
|
|
};
|
|
|
|
_map_x :: 8;
|
|
_map_y :: 8;
|
|
map := CreateMap(_map_x, _map_y, &:[_map_x * _map_y]int{
|
|
1,0,0,0,0,0,0,0,
|
|
0,0,0,0,0,0,0,0,
|
|
0,0,0,0,0,0,0,0,
|
|
0,0,0,0,0,0,0,0,
|
|
1,0,0,0,0,0,0,1,
|
|
0,0,0,0,1,0,0,0,
|
|
0,0,0,0,0,0,0,0,
|
|
0,0,0,0,0,0,0,0,
|
|
}[0]);
|
|
|
|
for !WindowShouldClose() {
|
|
if IsMouseButtonDown(MOUSE_BUTTON_LEFT) {
|
|
delta := GetMouseDelta();
|
|
camera.offset = Vector2Add(camera.offset, delta);
|
|
}
|
|
|
|
BeginDrawing();
|
|
ClearBackground(RAYWHITE);
|
|
|
|
BeginMode2D(camera);
|
|
for y_it := 0; y_it < map.y; y_it += 1 {
|
|
for x_it := 0; x_it < map.x; x_it += 1 {
|
|
tile := &map.tiles[x_it + y_it * map.x];
|
|
original_rect := RectFromSize({XPIX * :float(x_it), YPIX * :float(y_it)}, {XPIX, YPIX});
|
|
rect := Shrink(original_rect, 2);
|
|
|
|
r := RectToRectangle(rect);
|
|
|
|
min_screen := GetWorldToScreen2D(original_rect.min, camera);
|
|
size := GetRectSize(original_rect);
|
|
|
|
screen_rect: Rectangle = {min_screen.x, min_screen.y, size.x, size.y};
|
|
mouse_p := GetMousePosition();
|
|
|
|
if tile.value == 1 {
|
|
DrawRectangleRec(r, RED);
|
|
} else {
|
|
DrawRectangleRec(r, GREEN);
|
|
}
|
|
|
|
if CheckCollisionPointRec(mouse_p, screen_rect) {
|
|
DrawRectangleRec(r, BLUE);
|
|
}
|
|
}
|
|
}
|
|
EndMode2D();
|
|
|
|
// DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);
|
|
EndDrawing();
|
|
}
|
|
|
|
CloseWindow();
|
|
return 0;
|
|
}
|
|
|