summaryrefslogtreecommitdiff
path: root/backend/src/Models
diff options
context:
space:
mode:
authorphyscik <mynameisgennadiy@vk.com>2026-04-13 17:38:19 +0500
committerphyscik <mynameisgennadiy@vk.com>2026-04-13 17:38:19 +0500
commit6e83c903d2a63dd80b6eb7c4d9f363f7f164f210 (patch)
tree186c4c2886cc8d191ddd48613a0ce823430625de /backend/src/Models
parentabf7e6ffd80ac6958d136d1be348afee8b094da6 (diff)
backend start
Diffstat (limited to 'backend/src/Models')
-rw-r--r--backend/src/Models/RangedWeapon.zig48
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('/'));
+}