diff options
| author | physcik <mynameisgennadiy@vk.com> | 2026-04-13 17:38:19 +0500 |
|---|---|---|
| committer | physcik <mynameisgennadiy@vk.com> | 2026-04-13 17:38:19 +0500 |
| commit | 6e83c903d2a63dd80b6eb7c4d9f363f7f164f210 (patch) | |
| tree | 186c4c2886cc8d191ddd48613a0ce823430625de /backend/src/Models | |
| parent | abf7e6ffd80ac6958d136d1be348afee8b094da6 (diff) | |
backend start
Diffstat (limited to 'backend/src/Models')
| -rw-r--r-- | backend/src/Models/RangedWeapon.zig | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/backend/src/Models/RangedWeapon.zig b/backend/src/Models/RangedWeapon.zig new file mode 100644 index 0000000..7ec1f01 --- /dev/null +++ b/backend/src/Models/RangedWeapon.zig @@ -0,0 +1,48 @@ +const std = @import("std"); + +pub const RangedWeaponType = struct { + WeaponType: []const u8, + Accuracy: i8, + Concealability: []const u8, + Avaliability: []const u8, + Damage: []const u8, + Ammunition: []const u8, + NumberOfShots: u8, + RateOfFire: u8, + Reliability: []const u8, + + pub fn GetCompactNotation(self: *RangedWeaponType, separator: u8) ![]const u8 { + var b: [64]u8 = undefined; + return try std.fmt.bufPrint(&b, + "{s}{c}{d}{c}{s}{c}{s}{c}{s}({s}){c}{d}{c}{d}{c}{s}", + .{ + self.WeaponType, separator, + self.Accuracy, separator, + self.Concealability, separator, + self.Avaliability, separator, + self.Damage, + self.Ammunition, separator, + self.NumberOfShots, separator, + self.RateOfFire, separator, + self.Reliability, + }); + } +}; + +test "CompactNotation" { + var testType: RangedWeaponType = .{ + .WeaponType = "P", + .Accuracy = -1, + .Concealability = "P", + .Avaliability = "E", + .Damage = "1D6", + .Ammunition = "5mm", + .NumberOfShots = 8, + .RateOfFire = 2, + .Reliability = "ST" + }; + + try std.testing.expectEqualStrings( + "P/-1/P/E/1D6(5mm)/8/2/ST", + try testType.GetCompactNotation('/')); +} |
