mirror of
https://git.xeondev.com/LR/S.git
synced 2026-02-04 06:55:06 +01:00
chore(Assets): add LevelMapMark config
This commit is contained in:
49132
assets/configs/LevelMapMark.json
Normal file
49132
assets/configs/LevelMapMark.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -7,6 +7,7 @@ pub const CharacterSkillMap = @import("Assets/CharacterSkillMap.zig");
|
|||||||
const Io = std.Io;
|
const Io = std.Io;
|
||||||
const Allocator = std.mem.Allocator;
|
const Allocator = std.mem.Allocator;
|
||||||
const ArenaAllocator = std.heap.ArenaAllocator;
|
const ArenaAllocator = std.heap.ArenaAllocator;
|
||||||
|
const StringHashMap = std.StringArrayHashMapUnmanaged;
|
||||||
|
|
||||||
const meta = std.meta;
|
const meta = std.meta;
|
||||||
const log = std.log.scoped(.assets);
|
const log = std.log.scoped(.assets);
|
||||||
@@ -17,7 +18,11 @@ char_skill_map: CharacterSkillMap,
|
|||||||
str_to_num_dicts: IndexDictionaries.StrToNum,
|
str_to_num_dicts: IndexDictionaries.StrToNum,
|
||||||
num_to_str_dicts: IndexDictionaries.NumToStr,
|
num_to_str_dicts: IndexDictionaries.NumToStr,
|
||||||
common_skill_config: configs.CommonSkillConfig,
|
common_skill_config: configs.CommonSkillConfig,
|
||||||
level_config_table: std.StringArrayHashMapUnmanaged(configs.LevelConfig),
|
level_config_table: StringHashMap(configs.LevelConfig),
|
||||||
|
// Map mark groups as they're stored in LevelMapMark.json
|
||||||
|
level_map_mark_groups: StringHashMap([]const configs.ClientSingleMapMarkData),
|
||||||
|
// instId-to-data mapping
|
||||||
|
map_mark_table: StringHashMap(*const configs.ClientSingleMapMarkData),
|
||||||
|
|
||||||
pub const IdGroup = enum {
|
pub const IdGroup = enum {
|
||||||
char_id,
|
char_id,
|
||||||
@@ -63,12 +68,21 @@ pub fn load(io: Io, gpa: Allocator) !Assets {
|
|||||||
configs.CommonSkillConfig.file,
|
configs.CommonSkillConfig.file,
|
||||||
);
|
);
|
||||||
|
|
||||||
const level_config_table = try configs.loadJsonConfig(
|
const level_config_table = (try configs.loadJsonConfig(
|
||||||
std.json.ArrayHashMap(configs.LevelConfig),
|
std.json.ArrayHashMap(configs.LevelConfig),
|
||||||
io,
|
io,
|
||||||
arena.allocator(),
|
arena.allocator(),
|
||||||
"LevelConfigTable.json",
|
"LevelConfigTable.json",
|
||||||
);
|
)).map;
|
||||||
|
|
||||||
|
const level_map_mark_groups = (try configs.loadJsonConfig(
|
||||||
|
std.json.ArrayHashMap([]const configs.ClientSingleMapMarkData),
|
||||||
|
io,
|
||||||
|
arena.allocator(),
|
||||||
|
"LevelMapMark.json",
|
||||||
|
)).map;
|
||||||
|
|
||||||
|
const map_mark_table = try buildMapMarkTable(&level_map_mark_groups, arena.allocator());
|
||||||
|
|
||||||
return .{
|
return .{
|
||||||
.arena = arena,
|
.arena = arena,
|
||||||
@@ -77,10 +91,30 @@ pub fn load(io: Io, gpa: Allocator) !Assets {
|
|||||||
.str_to_num_dicts = str_to_num_dicts,
|
.str_to_num_dicts = str_to_num_dicts,
|
||||||
.num_to_str_dicts = num_to_str_dicts,
|
.num_to_str_dicts = num_to_str_dicts,
|
||||||
.common_skill_config = common_skill_config,
|
.common_skill_config = common_skill_config,
|
||||||
.level_config_table = level_config_table.map,
|
.level_config_table = level_config_table,
|
||||||
|
.level_map_mark_groups = level_map_mark_groups,
|
||||||
|
.map_mark_table = map_mark_table,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn buildMapMarkTable(
|
||||||
|
groups: *const StringHashMap([]const configs.ClientSingleMapMarkData),
|
||||||
|
arena: Allocator,
|
||||||
|
) Allocator.Error!StringHashMap(*const configs.ClientSingleMapMarkData) {
|
||||||
|
var map: StringHashMap(*const configs.ClientSingleMapMarkData) = .empty;
|
||||||
|
|
||||||
|
for (groups.values()) |group| for (group) |*mark| {
|
||||||
|
const inst_id = try std.mem.concat(
|
||||||
|
arena,
|
||||||
|
u8,
|
||||||
|
&.{ mark.basicData.templateId, mark.basicData.markInstId },
|
||||||
|
);
|
||||||
|
try map.put(arena, inst_id, mark);
|
||||||
|
};
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
pub fn deinit(assets: *Assets) void {
|
pub fn deinit(assets: *Assets) void {
|
||||||
assets.owned_tables.deinit();
|
assets.owned_tables.deinit();
|
||||||
assets.arena.deinit();
|
assets.arena.deinit();
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ const json = std.json;
|
|||||||
|
|
||||||
pub const CommonSkillConfig = @import("configs/CommonSkillConfig.zig");
|
pub const CommonSkillConfig = @import("configs/CommonSkillConfig.zig");
|
||||||
pub const LevelConfig = @import("configs/LevelConfig.zig");
|
pub const LevelConfig = @import("configs/LevelConfig.zig");
|
||||||
|
pub const ClientSingleMapMarkData = @import("configs/ClientSingleMapMarkData.zig");
|
||||||
|
|
||||||
const Io = std.Io;
|
const Io = std.Io;
|
||||||
const Allocator = std.mem.Allocator;
|
const Allocator = std.mem.Allocator;
|
||||||
|
|||||||
11
gamesv/src/Assets/configs/ClientSingleMapMarkData.zig
Normal file
11
gamesv/src/Assets/configs/ClientSingleMapMarkData.zig
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
basicData: MapMarkBasicData,
|
||||||
|
|
||||||
|
pub const MapMarkBasicData = struct {
|
||||||
|
templateId: []const u8,
|
||||||
|
markInstId: []const u8,
|
||||||
|
pos: struct {
|
||||||
|
x: f32,
|
||||||
|
y: f32,
|
||||||
|
z: f32,
|
||||||
|
},
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user