chore(Assets): add TeleportValidationDataTable

This commit is contained in:
xeon
2026-02-04 01:00:29 +03:00
parent f96fb51e3c
commit 5dff70b504
5 changed files with 2091 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -23,6 +23,7 @@ level_config_table: StringHashMap(configs.LevelConfig),
level_map_mark_groups: StringHashMap([]const configs.ClientSingleMapMarkData),
// instId-to-data mapping
map_mark_table: StringHashMap(*const configs.ClientSingleMapMarkData),
teleport_validation_table: configs.TeleportValidationDataTable,
pub const IdGroup = enum {
char_id,
@@ -84,6 +85,13 @@ pub fn load(io: Io, gpa: Allocator) !Assets {
const map_mark_table = try buildMapMarkTable(&level_map_mark_groups, arena.allocator());
const teleport_validation_table = try configs.loadJsonConfig(
configs.TeleportValidationDataTable,
io,
arena.allocator(),
"MapTeleportValidationDataTable.json",
);
return .{
.arena = arena,
.owned_tables = owned_tables,
@@ -94,6 +102,7 @@ pub fn load(io: Io, gpa: Allocator) !Assets {
.level_config_table = level_config_table,
.level_map_mark_groups = level_map_mark_groups,
.map_mark_table = map_mark_table,
.teleport_validation_table = teleport_validation_table,
};
}

View File

@@ -4,6 +4,7 @@ const json = std.json;
pub const CommonSkillConfig = @import("configs/CommonSkillConfig.zig");
pub const LevelConfig = @import("configs/LevelConfig.zig");
pub const ClientSingleMapMarkData = @import("configs/ClientSingleMapMarkData.zig");
pub const TeleportValidationDataTable = @import("configs/TeleportValidationDataTable.zig");
const Io = std.Io;
const Allocator = std.mem.Allocator;

View File

@@ -1,4 +1,7 @@
const ClientSingleMapMarkData = @This();
basicData: MapMarkBasicData,
detailedData: ?MapMarkDetailedData = null,
pub const MapMarkBasicData = struct {
templateId: []const u8,
@@ -9,3 +12,24 @@ pub const MapMarkBasicData = struct {
z: f32,
},
};
pub const MapMarkDetailedData = struct {
logicIdGlobal: ?u64 = null,
teleportValidationId: ?[]const u8 = null,
pub const TeleportValidationData = struct {
logicIdGlobal: u64,
teleportValidationId: []const u8,
};
};
pub fn teleportValidationData(
csmmd: *const ClientSingleMapMarkData,
) ?MapMarkDetailedData.TeleportValidationData {
const details = csmmd.detailedData orelse return null;
return .{
.logicIdGlobal = details.logicIdGlobal orelse return null,
.teleportValidationId = details.teleportValidationId orelse return null,
};
}

View File

@@ -0,0 +1,10 @@
const std = @import("std");
teleportValidationDatas: std.json.ArrayHashMap(TeleportValidationData),
pub const TeleportValidationData = struct {
id: []const u8,
teleportReason: i32,
sceneId: []const u8,
position: struct { x: f32, y: f32, z: f32 },
};