node implementation on spawn areas

This commit is contained in:
Martin Vrhovšek 2025-07-22 10:06:56 +02:00
parent 6b39998232
commit 7c12f31ed9
4 changed files with 28 additions and 2 deletions

View File

@ -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;
}
};

View File

@ -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
}
};

View File

@ -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();
}
}

View File

@ -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);
}
};