diff --git a/src/area/areas.zig b/src/area/areas.zig index 77a9951..f42fea6 100644 --- a/src/area/areas.zig +++ b/src/area/areas.zig @@ -1,5 +1,6 @@ const std = @import("std"); const rl = @import("raylib"); +const str_node = @import("../road/node.zig"); const spawn_area = @import("spawn-area.zig"); const structures = @import("../structures.zig"); @@ -75,4 +76,15 @@ pub const Areas = struct { return valuesToRandomise; } + + pub fn getNodes(self: *Areas) ![]str_node.Node { + var nodes = try self.allocator.alloc(str_node.Node, self.areas.len); + + for (0..self.areas.len) |i| { + const node_location = self.areas[i].getNodeLocation(); + nodes[i] = str_node.Node.init(node_location); + } + + return nodes; + } }; diff --git a/src/area/spawn-area.zig b/src/area/spawn-area.zig index 36c250d..da9fe7d 100644 --- a/src/area/spawn-area.zig +++ b/src/area/spawn-area.zig @@ -34,6 +34,13 @@ pub const SpawnArea = struct { }; } + pub fn getNodeLocation(self: *const SpawnArea) rl.Vector2 { + return rl.Vector2{ + .x = self.location.x + @as(f32, @floatFromInt(self.width)) * globals.getScale() / 2.0, + .y = self.location.y + @as(f32, @floatFromInt(self.height)) * globals.getScale() / 2.0, + }; + } + pub fn draw(self: *const SpawnArea) void { const rect = rl.Rectangle{ .x = self.location.x, @@ -42,6 +49,5 @@ pub const SpawnArea = struct { .height = @as(f32, @floatFromInt(self.height)) * globals.getScale(), }; rl.drawRectangleRec(rect, .dark_gray); - // todo draw cars } }; diff --git a/src/main.zig b/src/main.zig index cadac49..0a29ff7 100644 --- a/src/main.zig +++ b/src/main.zig @@ -41,7 +41,7 @@ pub fn main() !void { rl.clearBackground(.light_gray); try road_manager.inputHandler(); - area_manager.draw(); road_manager.draw(); + area_manager.draw(); } } diff --git a/src/road/road-manager.zig b/src/road/road-manager.zig index d5f9cc8..71b08f4 100644 --- a/src/road/road-manager.zig +++ b/src/road/road-manager.zig @@ -1,5 +1,6 @@ const std = @import("std"); const rl = @import("raylib"); +const area_str = @import("../area/areas.zig"); const road_str = @import("road.zig"); const road_data = @import("road-data.zig"); const node_str = @import("node.zig"); @@ -226,4 +227,11 @@ pub const RoadManager = struct { self.setDefaultColour(); self.selected_road = null; } + + pub fn getAreaNodes(self: *RoadManager, areas: area_str.Areas) !void { + const nodes = try areas.getNodes(); + defer self.allocator.free(nodes); + + try self.nodes.appendSlice(nodes); + } };