implemnted partial hovering animation on spawn area(s)

This commit is contained in:
Martin Vrhovšek 2025-07-23 07:32:16 +02:00
parent 4fe62d06d1
commit 147202d053
2 changed files with 67 additions and 1 deletions

View File

@ -48,5 +48,71 @@ pub const SpawnArea = struct {
.height = @as(f32, @floatFromInt(self.height)) * globals.getScale(),
};
rl.drawRectangleRec(rect, .dark_gray);
// red line for hover
if (self.checkHover()) {
var start_pos: rl.Vector2 = undefined;
var end_pos: rl.Vector2 = undefined;
// this should be precalculated shouldn't need do calculate this each time just for the sake of drawing it
switch (self.area) {
.top_left => {
start_pos = rl.Vector2 {
.x = self.location.x + intToFloat(self.width) * globals.getScale(),
.y = self.location.y,
};
end_pos = rl.Vector2 {
.x = start_pos.x,
.y = self.location.y + intToFloat(self.height) * globals.getScale(),
};
},
.top_right => {
start_pos = self.location;
end_pos = rl.Vector2 {
.x = start_pos.x,
.y = self.location.y + intToFloat(self.height) * globals.getScale(),
};
},
.bottom_left => {
start_pos = rl.Vector2 {
.x = self.location.x + intToFloat(self.width) * globals.getScale(),
.y = self.location.y,
};
end_pos = rl.Vector2 {
.x = start_pos.x,
.y = self.location.y + intToFloat(self.height) * globals.getScale(),
};
},
.bottom_right => {
start_pos = self.location;
end_pos = rl.Vector2 {
.x = start_pos.x,
.y = self.location.y + intToFloat(self.height) * globals.getScale(),
};
}
}
rl.drawLineEx(start_pos, end_pos, 5, .red);
}
}
fn checkHover(self: *const SpawnArea) bool {
const pos = rl.getMousePosition();
var x_ok = false;
var y_ok = false;
if (pos.x >= self.location.x and pos.x <= self.location.x + @as(f32, @floatFromInt(self.width)) * globals.getScale())
x_ok = true;
if (pos.y >= self.location.y and pos.y <= self.location.y + @as(f32, @floatFromInt(self.height)) * globals.getScale())
y_ok = true;
return x_ok and y_ok;
}
fn intToFloat(num: i32) f32 {
return @floatFromInt(num);
}
};

View File

@ -21,7 +21,7 @@ pub fn main() !void {
rl.maximizeWindow();
rl.setTargetFPS(60);
var area_manager = try areas.Areas.init(allocator, 3);
var area_manager = try areas.Areas.init(allocator, 4);
defer area_manager.deinit();
var road_manager = roadman_str.RoadManager.init(allocator);