From 4521845a69f16d159e040b9203e92a3e848f067b Mon Sep 17 00:00:00 2001 From: shenlei Date: Tue, 22 Sep 2026 19:21:10 +0900 Subject: [PATCH] audit(2A): include-dependency tool, 2V0-2V3 slice unit lists and batch-2 order port_deps.py resolves explicit #include edges plus the implicit edges each 40250 library's StdAfx.h supplies (symbol index restricted to StdAfx-visible headers), writes cumulative slice lists and the P0 topological order. Co-Authored-By: Claude Opus 5 --- .../skills/metin2-40250-parity-audit/SKILL.md | 3 + .../scripts/port_deps.py | 468 +++++ audit/remediation-roadmap.md | 2 +- audit/slices/2V0.json | 1548 ++++++++++++++ audit/slices/2V1.json | 1745 ++++++++++++++++ audit/slices/2V2.json | 1780 ++++++++++++++++ audit/slices/2V3.json | 1853 +++++++++++++++++ audit/slices/batch2-order.json | 205 ++ docs/PORT-PLAN.md | 8 +- 9 files changed, 7610 insertions(+), 2 deletions(-) create mode 100644 .agents/skills/metin2-40250-parity-audit/scripts/port_deps.py create mode 100644 audit/slices/2V0.json create mode 100644 audit/slices/2V1.json create mode 100644 audit/slices/2V2.json create mode 100644 audit/slices/2V3.json create mode 100644 audit/slices/batch2-order.json diff --git a/.agents/skills/metin2-40250-parity-audit/SKILL.md b/.agents/skills/metin2-40250-parity-audit/SKILL.md index 2732da9d..f9f8ce1c 100644 --- a/.agents/skills/metin2-40250-parity-audit/SKILL.md +++ b/.agents/skills/metin2-40250-parity-audit/SKILL.md @@ -148,6 +148,9 @@ behavior verified from code inspection alone. — function inventory (active `.vcxproj` sources + the 40250 Python root), progress per library and per layer, and tag/port-map/layout consistency. Run `check` before every commit that touches `audit/port-map/`. +- `scripts/port_deps.py closure | slices [--write] | order [--write]` — `#include` graph with the + implicit edges each library's `StdAfx.h` supplies; writes the 2V0-2V3 unit lists and the batch-2 + topological order to `audit/slices/`. Regenerate after changing a slice definition. - `scripts/py_embed_spike.py` (Python 2.7) — runs the 40250 `system.py` bootstrap with stub native modules; used by the embedded-Python evaluation. - `scripts/audit_ledger.py refresh --write | report --write | validate` — run once per batch, not diff --git a/.agents/skills/metin2-40250-parity-audit/scripts/port_deps.py b/.agents/skills/metin2-40250-parity-audit/scripts/port_deps.py new file mode 100644 index 00000000..c0702782 --- /dev/null +++ b/.agents/skills/metin2-40250-parity-audit/scripts/port_deps.py @@ -0,0 +1,468 @@ +#!/usr/bin/env python3 +"""40250 `#include` dependency graph: slice unit lists and batch-2 port order. + +40250 headers lean on each library's precompiled `StdAfx.h` for most of their types, so the +explicit `#include` graph alone is not a compile closure. This tool adds *implicit* edges: an +identifier a file uses but does not see through its explicit includes is resolved to the header +that declares it, restricted to the headers the file's own library `StdAfx.h` makes visible in +40250 (so an implicit edge is exactly one that a slim per-library StdAfx must supply). + + port_deps.py closure [...] compile closure (explicit + implicit), with reasons + port_deps.py slices [--write] audit/slices/2V*.json: cumulative 2V0-2V3 unit lists + port_deps.py order [--write] audit/slices/batch2-order.json: topological P0 order + +Header ownership: `Lib/X.h` belongs to `Lib/X.cpp` when that is an active unit; a header-only +file belongs to the first unit (in port order) whose closure needs it. +""" + +from __future__ import annotations + +import argparse +import json +import re +import sys +from collections import defaultdict +from pathlib import Path + +import refroot # script directory is on sys.path when run directly +from port_map import PY_ROOT, UNIT_DIRS, inventory, layer, priority + +HEADER_SUFFIXES = {".h", ".hpp", ".inl"} +SOURCE_DIRS = UNIT_DIRS + ("Discord", "CWebBrowser") +# Global names that the index must not turn into edges (Win32/CRT/STL spellings every lib uses). +IGNORED_SYMBOLS = {"TRUE", "FALSE", "NULL", "BOOL", "BYTE", "WORD", "DWORD", "UINT", "LONG", "INT", "VOID"} + +# Cumulative vertical slices from docs/PORT-PLAN.md section 4 (2V0-2V3). `cpp` globs are real +# units of the slice; `py` seeds are root scripts whose top-level import closure the slice runs. +SLICES = { + "2V0": { + "cpp": ["ScriptLib/PythonLauncher.cpp", "UserInterface/PythonPackModule.cpp", + "EterPythonLib/PythonWindow*.cpp", "EterPythonLib/PythonWindowManager*.cpp", + "EterPythonLib/PythonGraphic*Module.cpp", "UserInterface/PythonApplicationModule.cpp"], + "py": ["system.py", "prototype.py", "intrologo.py"], + }, + "2V1": { + "cpp": ["UserInterface/PythonNetworkStream.cpp", "UserInterface/PythonNetworkStreamPhaseHandShake.cpp", + "UserInterface/PythonNetworkStreamPhaseLogin.cpp", "UserInterface/PythonNetworkStreamPhaseSelect.cpp", + "UserInterface/PythonNetworkStreamPhaseLoading.cpp", "UserInterface/PythonNetworkStreamModule.cpp", + "UserInterface/AccountConnector.cpp"], + "py": ["intrologin.py", "introempire.py", "introselect.py", "introcreate.py", "introloading.py"], + }, + "2V2": { + "cpp": ["UserInterface/PythonNetworkStreamPhaseGame.cpp", "UserInterface/PythonCharacterManager.cpp", + "UserInterface/InstanceBase.cpp", "GameLib/ActorInstance.cpp"], + "py": ["game.py"], + }, + "2V3": { + "cpp": ["UserInterface/PythonPlayer.cpp", "UserInterface/PythonPlayerInput*.cpp", + "UserInterface/PythonPlayerEventHandler.cpp", "UserInterface/InstanceBaseMovement.cpp", + "GameLib/ActorInstanceMotion.cpp", "GameLib/ActorInstanceEvent.cpp", + "GameLib/ActorInstancePosition.cpp", "GameLib/ActorInstanceRotation.cpp", + "GameLib/ActorInstanceCollisionDetection.cpp"], + "py": [], + }, +} + +_STRIP = re.compile(r"//[^\n]*|/\*.*?\*/|\"(?:\\.|[^\"\\\n])*\"|'(?:\\.|[^'\\\n])*'", re.S) +_INCLUDE = re.compile(r"^[ \t]*#[ \t]*include[ \t]*([<\"])([^>\"]+)[>\"]", re.M) +_IDENT = re.compile(r"\b[A-Za-z_]\w*\b") +_TYPE_DECL = re.compile(r"\b(class|struct|union|enum)\s+(?:__declspec\s*\([^)]*\)\s*)?([A-Za-z_]\w*)\s*" + r"(?:final\s*)?(?::[^;{()]*)?\{") +_ENUM_BODY = re.compile(r"\benum\b[^;{()]*\{") +_TYPEDEF = re.compile(r"\btypedef\b") +_DEFINE = re.compile(r"^[ \t]*#[ \t]*define[ \t]+([A-Za-z_]\w*)(?:\(|[ \t]+\S)", re.M) +_FREE_FN = re.compile(r"^(?:extern\s+|inline\s+|static\s+|__forceinline\s+)*(?!return\b|typedef\b|else\b|if\b|" + r"while\b|for\b|switch\b|case\b|class\b|struct\b|enum\b|template\b|using\b|friend\b)" + r"[A-Za-z_][\w:<>, \t\*&]*?[ \t\*&]([A-Za-z_]\w*)[ \t]*\(", re.M) +_EXTERN_VAR = re.compile(r"^extern\s+[^;()]*?\b([A-Za-z_]\w*)\s*(?:\[[^\]]*\])?\s*;", re.M) +_PY_IMPORT = re.compile(r"^(?:import\s+([\w, \t]+)|from\s+(\w+)\s+import\b)", re.M) +_PY_INIT = re.compile(r"Py_InitModule4?\(\s*\"(\w+)\"") + + +def text(path: Path, keep_strings: bool = False) -> str: + def repl(m: re.Match) -> str: + tok = m.group(0) + if tok.startswith("/*"): + return "\n" * tok.count("\n") + return tok if keep_strings and tok[0] in "\"'" else " " + return _STRIP.sub(repl, path.read_bytes().decode("latin-1")) + + +def matching_brace(src: str, start: int) -> int: + depth = 0 + for i in range(start, len(src)): + if src[i] == "{": + depth += 1 + elif src[i] == "}": + depth -= 1 + if depth == 0: + return i + return len(src) - 1 + + +def top_level(src: str) -> str: + """`src` with every brace-enclosed body blanked (newlines kept), leaving namespace-scope text.""" + out, depth = [], 0 + for ch in src: + if ch == "{": + depth += 1 + elif ch == "}": + depth = max(depth - 1, 0) + elif depth == 0 or ch == "\n": + out.append(ch) + continue + return "".join(out) + + +def declared(src: str) -> set[str]: + """Names a header declares at namespace scope: types, typedefs, enumerators, macros, free functions.""" + names = {m.group(2) for m in _TYPE_DECL.finditer(src)} + for m in _ENUM_BODY.finditer(src): + body = src[m.end():matching_brace(src, m.end() - 1)] + for item in body.split(","): + if ident := re.match(r"\s*([A-Za-z_]\w*)", item): + names.add(ident.group(1)) + for m in _TYPEDEF.finditer(src): + rest = src[m.end():] + brace, semi = rest.find("{"), rest.find(";") + if 0 <= brace < semi: + end = matching_brace(rest, brace) + tail = rest[end + 1:rest.find(";", end)] + names.update(re.findall(r"[A-Za-z_]\w*", tail)) + elif semi >= 0: + decl = rest[:semi] + fnptr = re.search(r"\(\s*\w*\s*\*\s*([A-Za-z_]\w*)\s*\)", decl) + last = re.findall(r"([A-Za-z_]\w*)\s*(?:\[[^\]]*\]\s*)*$", decl.strip()) + if fnptr: + names.add(fnptr.group(1)) + elif last: + names.add(last[0]) + names.update(_DEFINE.findall(src)) + top = top_level(src) + names.update(m.group(1) for m in _FREE_FN.finditer(top)) + names.update(_EXTERN_VAR.findall(top)) + return names - IGNORED_SYMBOLS + + +class Graph: + def __init__(self, ref: Path): + self.ref = ref + self.files: dict[str, str] = {} # lower-case rel path -> real rel path + for lib in SOURCE_DIRS: + base = ref / lib + if base.is_dir(): + for p in base.rglob("*"): + if p.suffix.lower() in HEADER_SUFFIXES | {".cpp", ".c"}: + rel = p.relative_to(ref).as_posix() + self.files[rel.lower()] = rel + self._src: dict[str, str] = {} + self._ids: dict[str, set[str]] = {} + self._inc: dict[str, list[tuple[str, str]]] = {} + self._explicit: dict[str, tuple[list[str], list[str]]] = {} + self.decl: dict[str, set[str]] = {} + self.symbols: dict[str, set[str]] = defaultdict(set) # name -> declaring headers + for rel in self.files.values(): + if Path(rel).suffix.lower() in HEADER_SUFFIXES: + self.decl[rel] = declared(self.src(rel)) + for name in self.decl[rel]: + self.symbols[name].add(rel) + self._visible: dict[str, set[str]] = {} + + def src(self, rel: str) -> str: + if rel not in self._src: + self._src[rel] = text(self.ref / rel) + return self._src[rel] + + def idents(self, rel: str) -> set[str]: + if rel not in self._ids: + self._ids[rel] = set(_IDENT.findall(self.src(rel))) + return self._ids[rel] + + def includes(self, rel: str) -> list[tuple[str, str]]: + if rel not in self._inc: + self._inc[rel] = _INCLUDE.findall(text(self.ref / rel, keep_strings=True)) + return self._inc[rel] + + def resolve(self, frm: str, inc: str) -> str | None: + inc = inc.replace("\\", "/") + for base in (Path(frm).parent, Path(".")): + parts: list[str] = [] + for part in (base / inc).as_posix().split("/"): + if part == "..": + if parts: + parts.pop() + elif part not in ("", "."): + parts.append(part) + hit = self.files.get("/".join(parts).lower()) + if hit: + return hit + return None + + def explicit(self, rel: str) -> tuple[list[str], list[str]]: + """(resolved project includes, system includes); StdAfx includes are dropped.""" + if rel not in self._explicit: + local, system = [], [] + for kind, inc in self.includes(rel): + if Path(inc).name.lower() == "stdafx.h" and kind == '"': + continue + hit = self.resolve(rel, inc) if kind == '"' else None + if hit: + local.append(hit) + elif kind == "<" or not hit: + system.append(inc.lower()) + self._explicit[rel] = (local, system) + return self._explicit[rel] + + def explicit_closure(self, roots: list[str]) -> set[str]: + seen: set[str] = set() + stack = list(roots) + while stack: + rel = stack.pop() + if rel in seen: + continue + seen.add(rel) + # StdAfx chains are walked here (unlike explicit()), since that is what they supply. + for kind, inc in self.includes(rel): + hit = self.resolve(rel, inc) if kind == '"' else None + if hit: + stack.append(hit) + return seen + + def visible(self, rel: str) -> set[str]: + """Headers the 40250 StdAfx of `rel`'s library makes visible.""" + lib = rel.split("/")[0] + if lib not in self._visible: + stdafx = self.files.get(f"{lib}/stdafx.h".lower()) + self._visible[lib] = self.explicit_closure([stdafx]) - {stdafx} if stdafx else set() + return self._visible[lib] + + def closure(self, roots: list[str]) -> tuple[dict[str, str], set[str], dict[str, list[str]]]: + """Compile closure of `roots`: {file: reason}, system includes, ambiguous symbols.""" + reason: dict[str, str] = {r: "root" for r in roots} + system: set[str] = set() + ambiguous: dict[str, list[str]] = {} + queue = list(roots) + scanned: set[str] = set() + known: set[str] = set() + while queue: + # Explicit edges first, so implicit resolution sees the full explicit closure. + while queue: + rel = queue.pop() + known |= self.decl.get(rel, set()) + local, sys_inc = self.explicit(rel) + system.update(sys_inc) + for hit in local: + if hit not in reason: + reason[hit] = f"include from {rel}" + queue.append(hit) + for rel in sorted(set(reason) - scanned): + scanned.add(rel) + vis = self.visible(rel) + lib = rel.split("/")[0] + for name in sorted(self.idents(rel) - known): + cands = sorted(self.symbols.get(name, set()) & vis) + if not cands: + continue + pick = [c for c in cands if c.split("/")[0] == lib] or cands + if len(pick) > 1: + ambiguous[name] = pick + hit = pick[0] + known |= self.decl[hit] + if hit not in reason: + reason[hit] = f"implicit {name} from {rel}" + queue.append(hit) + return reason, system, ambiguous + + +def header_layer(units: dict[str, Path], rel: str) -> str: + stem = rel.rsplit(".", 1)[0] + return layer(stem + ".cpp") if stem + ".cpp" in units else layer(rel) + + +def expand(units: dict[str, Path], globs: list[str]) -> list[str]: + import fnmatch + out: list[str] = [] + for pat in globs: + hits = sorted(u for u in units if fnmatch.fnmatch(u, pat)) + if not hits: + raise SystemExit(f"slice pattern {pat!r} matches no active 40250 unit") + out += [h for h in hits if h not in out] + return out + + +def py_closure(ref: Path, seeds: list[str], native: dict[str, str]) -> tuple[list[str], dict[str, str]]: + root = (ref / PY_ROOT).resolve() + files = {p.stem.lower(): p for p in root.glob("*.py")} + seen: list[str] = [] + mods: dict[str, str] = {} + stack = [Path(s).stem.lower() for s in seeds] + while stack: + name = stack.pop() + if name in seen: + continue + seen.append(name) + for a, b in _PY_IMPORT.findall(files[name].read_bytes().decode("latin-1")): + for mod in ([m.strip() for m in a.split(",")] if a else [b]): + if not mod: + continue + if mod.lower() in files: + stack.append(mod.lower()) + else: + mods[mod] = native.get(mod, "stdlib") + return sorted(files[n].name for n in seen), dict(sorted(mods.items())) + + +def native_modules(ref: Path, units: dict[str, Path]) -> dict[str, str]: + out = {} + for unit, path in units.items(): + if unit.endswith(".cpp"): + for name in _PY_INIT.findall(path.read_bytes().decode("latin-1")): + out[name] = unit + return out + + +def owner_map(units: dict[str, Path], order: list[str], closures: dict[str, set[str]]) -> dict[str, str]: + owner = {} + for unit in units: + if unit.endswith(".cpp"): + for suffix in (".h", ".hpp", ".inl"): + owner[unit[:-4] + suffix] = unit + for unit in order: + for rel in sorted(closures[unit]): + owner.setdefault(rel, unit) + return owner + + +def build_slices(ref: Path, g: Graph, units: dict[str, Path]) -> dict[str, dict]: + native = native_modules(ref, units) + cpp: list[str] = [] + py_seeds: list[str] = [] + out = {} + for name, spec in SLICES.items(): + new = [u for u in expand(units, spec["cpp"]) if u not in cpp] + cpp += new + py_seeds += spec["py"] + reason, system, ambiguous = g.closure(cpp) + headers = sorted(r for r in reason if Path(r).suffix.lower() in HEADER_SUFFIXES) + scripts, mods = py_closure(ref, py_seeds, native) + out[name] = { + "slice": name, + "generated_by": ".agents/skills/metin2-40250-parity-audit/scripts/port_deps.py slices --write", + "units": [{"unit": u, "layer": layer(u), "new": u in new} for u in cpp], + "headers": [{"header": h, "layer": header_layer(units, h), "reason": reason[h], + "owner_in_slice": (h.rsplit(".", 1)[0] + ".cpp") in cpp} + for h in headers], + "stdafx_supplied": sorted(h for h in headers if reason[h].startswith("implicit")), + "system_includes": sorted(system), + "python_scripts": scripts, + "native_modules": [{"module": m, "provider": p, "real": p in cpp, + "layer": layer(p) if p in units else "stdlib"} for m, p in mods.items()], + "ambiguous_symbols": ambiguous, + } + return out + + +def build_order(g: Graph, units: dict[str, Path]) -> dict: + p0 = [u for u in units if priority(u) == "P0" and layer(u) == "logic"] + closures = {u: set(g.closure([u])[0]) for u in p0} + stems = {u[:-4].lower(): u for u in units if u.endswith(".cpp")} + deps: dict[str, set[str]] = {} + for u in p0: + deps[u] = set() + for rel in closures[u]: + owner = stems.get(rel.rsplit(".", 1)[0].lower()) + if owner and owner != u and owner in closures: + deps[u].add(owner) + # Tarjan SCC, then Kahn on the condensation; ties broken by the roadmap's candidate order. + index, low, stack, on, sccs = {}, {}, [], set(), [] + + def strong(v: str, counter=[0]) -> None: + index[v] = low[v] = counter[0] + counter[0] += 1 + stack.append(v) + on.add(v) + for w in sorted(deps[v]): + if w not in index: + strong(w) + low[v] = min(low[v], low[w]) + elif w in on: + low[v] = min(low[v], index[w]) + if low[v] == index[v]: + comp = [] + while True: + w = stack.pop() + on.discard(w) + comp.append(w) + if w == v: + break + sccs.append(sorted(comp)) + + sys.setrecursionlimit(10000) + for v in sorted(p0): + if v not in index: + strong(v) + comp_of = {u: i for i, c in enumerate(sccs) for u in c} + # Tarjan emits SCCs in reverse topological order of the "depends on" edges: dependencies first. + steps = [] + for comp in sccs: + after = sorted({w for u in comp for d in deps[u] if comp_of[d] != comp_of[u] for w in sccs[comp_of[d]]}) + steps.append({"units": comp, "serial_group": len(comp) > 1, "after": after}) + return { + "generated_by": ".agents/skills/metin2-40250-parity-audit/scripts/port_deps.py order --write", + "note": "P0 logic units; a unit starts only after every unit in `after` has landed. `serial_group` units " + "include each other's headers and are ported as one serial group.", + "steps": steps, + } + + +def main() -> int: + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + sub = ap.add_subparsers(dest="cmd", required=True) + c = sub.add_parser("closure") + c.add_argument("files", nargs="+") + for name in ("slices", "order"): + s = sub.add_parser(name) + s.add_argument("--write", action="store_true") + args = ap.parse_args() + + repo = refroot.repo_root() + ref = refroot.reference_root(repo) + units = inventory(ref) + g = Graph(ref) + out_dir = repo / "audit" / "slices" + + if args.cmd == "closure": + roots = [] + for f in args.files: + hit = g.files.get(f.lower()) + if not hit: + raise SystemExit(f"{f}: not a 40250 source file") + roots.append(hit) + reason, system, ambiguous = g.closure(roots) + for rel in sorted(reason): + print(f"{rel:55} {header_layer(units, rel):8} {reason[rel]}") + print(f"\nsystem includes: {' '.join(sorted(system))}") + for name, cands in sorted(ambiguous.items()): + print(f"ambiguous {name}: {', '.join(cands)}") + return 0 + + data = build_slices(ref, g, units) if args.cmd == "slices" else {"batch2-order": build_order(g, units)} + for name, payload in data.items(): + body = json.dumps(payload, indent=2, ensure_ascii=False) + "\n" + if args.write: + out_dir.mkdir(parents=True, exist_ok=True) + (out_dir / f"{name}.json").write_text(body, encoding="utf-8") + print(f"wrote audit/slices/{name}.json") + elif args.cmd == "order": + for i, step in enumerate(payload["steps"], 1): + tag = " (serial)" if step["serial_group"] else "" + print(f"{i:2}. {', '.join(step['units'])}{tag} after: {', '.join(step['after']) or '-'}") + else: + print(f"{name}: {len(payload['units'])} units, {len(payload['headers'])} headers " + f"({len(payload['stdafx_supplied'])} via StdAfx), {len(payload['python_scripts'])} scripts, " + f"{sum(m['real'] for m in payload['native_modules'])}/{len(payload['native_modules'])} native modules real") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/audit/remediation-roadmap.md b/audit/remediation-roadmap.md index 90cbbd8a..818788e4 100644 --- a/audit/remediation-roadmap.md +++ b/audit/remediation-roadmap.md @@ -28,7 +28,7 @@ python3 .agents/skills/metin2-40250-parity-audit/scripts/port_map.py queue --lim | 3 | 剩余 Python 模块和窗口 → P1 战斗/技能 → P2 游戏阶段封包 → P3 物品 | 未开始 | | 4 | `NEEDS_LIVE` 真服验证批 | 未开始 | -## 批次 2 单元(顺序由 2A 的依赖图重新生成;下表仅为候选) +## 批次 2 单元(顺序以 `audit/slices/batch2-order.json` 为准,由 `port_deps.py order --write` 生成;下表仅为候选) 实现位置一律是镜像文件 `extension/src/port//.{h,cpp}`;下面列出的是需要删减旧逻辑的迁移来源。 目录、CMake 目标和公共头由 2A 建立。 diff --git a/audit/slices/2V0.json b/audit/slices/2V0.json new file mode 100644 index 00000000..cd619202 --- /dev/null +++ b/audit/slices/2V0.json @@ -0,0 +1,1548 @@ +{ + "slice": "2V0", + "generated_by": ".agents/skills/metin2-40250-parity-audit/scripts/port_deps.py slices --write", + "units": [ + { + "unit": "ScriptLib/PythonLauncher.cpp", + "layer": "python", + "new": true + }, + { + "unit": "UserInterface/PythonPackModule.cpp", + "layer": "python", + "new": true + }, + { + "unit": "EterPythonLib/PythonWindow.cpp", + "layer": "python", + "new": true + }, + { + "unit": "EterPythonLib/PythonWindowManager.cpp", + "layer": "python", + "new": true + }, + { + "unit": "EterPythonLib/PythonWindowManagerModule.cpp", + "layer": "python", + "new": true + }, + { + "unit": "EterPythonLib/PythonGraphicImageModule.cpp", + "layer": "python", + "new": true + }, + { + "unit": "EterPythonLib/PythonGraphicModule.cpp", + "layer": "python", + "new": true + }, + { + "unit": "EterPythonLib/PythonGraphicTextModule.cpp", + "layer": "python", + "new": true + }, + { + "unit": "EterPythonLib/PythonGraphicThingModule.cpp", + "layer": "python", + "new": true + }, + { + "unit": "UserInterface/PythonApplicationModule.cpp", + "layer": "python", + "new": true + } + ], + "headers": [ + { + "header": "EffectLib/EffectData.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectElementBase.h", + "layer": "platform", + "reason": "include from EffectLib/SimpleLightData.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectElementBaseInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectManager.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectManager.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectMesh.h", + "layer": "platform", + "reason": "include from EffectLib/EffectMeshInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectMeshInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectUpdateDecorator.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EmitterProperty.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/FrameController.h", + "layer": "platform", + "reason": "include from EffectLib/EffectMeshInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleInstance.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleProperty.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleSystemData.h", + "layer": "platform", + "reason": "include from EffectLib/EffectData.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleSystemInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/SimpleLightData.h", + "layer": "platform", + "reason": "include from EffectLib/SimpleLightInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/SimpleLightInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/Type.h", + "layer": "platform", + "reason": "include from EffectLib/SimpleLightData.h", + "owner_in_slice": false + }, + { + "header": "EterBase/CRC32.h", + "layer": "platform", + "reason": "include from EterPythonLib/PythonWindow.cpp", + "owner_in_slice": false + }, + { + "header": "EterBase/Debug.h", + "layer": "platform", + "reason": "include from EterLib/Pool.h", + "owner_in_slice": false + }, + { + "header": "EterBase/FileBase.h", + "layer": "platform", + "reason": "include from EterBase/MappedFile.h", + "owner_in_slice": false + }, + { + "header": "EterBase/FileLoader.h", + "layer": "platform", + "reason": "include from EterLib/TextFileLoader.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Filename.h", + "layer": "platform", + "reason": "include from EterBase/StdAfx.h", + "owner_in_slice": false + }, + { + "header": "EterBase/MappedFile.h", + "layer": "platform", + "reason": "include from EterPack/EterPack.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Poly/Poly.h", + "layer": "platform", + "reason": "include from UserInterface/PythonSkill.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Poly/SymTable.h", + "layer": "platform", + "reason": "include from EterBase/Poly/Poly.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Random.h", + "layer": "platform", + "reason": "include from EffectLib/EffectUpdateDecorator.h", + "owner_in_slice": false + }, + { + "header": "EterBase/ServiceDefs.h", + "layer": "platform", + "reason": "include from EterBase/StdAfx.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Singleton.h", + "layer": "platform", + "reason": "include from EterPack/EterPackManager.h", + "owner_in_slice": false + }, + { + "header": "EterBase/StdAfx.h", + "layer": "platform", + "reason": "implicit stricmp from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterBase/Stl.h", + "layer": "platform", + "reason": "include from EterPack/EterPackManager.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Timer.h", + "layer": "platform", + "reason": "include from EterLib/Profiler.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Utils.h", + "layer": "platform", + "reason": "include from EterPythonLib/PythonWindow.h", + "owner_in_slice": false + }, + { + "header": "EterBase/cipher.h", + "layer": "platform", + "reason": "include from EterLib/NetStream.h", + "owner_in_slice": false + }, + { + "header": "EterBase/lzo.h", + "layer": "platform", + "reason": "include from EterBase/MappedFile.h", + "owner_in_slice": false + }, + { + "header": "EterBase/tea.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplicationModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterBase/vk.h", + "layer": "platform", + "reason": "include from EterBase/StdAfx.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/LODController.h", + "layer": "platform", + "reason": "include from EterGrnLib/ThingInstance.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Material.h", + "layer": "platform", + "reason": "include from EterGrnLib/Mesh.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Mesh.h", + "layer": "platform", + "reason": "include from EterGrnLib/Model.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Model.h", + "layer": "platform", + "reason": "include from EterGrnLib/Thing.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/ModelInstance.h", + "layer": "platform", + "reason": "include from EterGrnLib/LODController.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Motion.h", + "layer": "platform", + "reason": "include from EterGrnLib/Thing.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Thing.h", + "layer": "platform", + "reason": "include from GameLib/RaceData.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/ThingInstance.h", + "layer": "platform", + "reason": "include from GameLib/ActorInstanceInterface.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Util.h", + "layer": "platform", + "reason": "include from EterGrnLib/Material.h", + "owner_in_slice": false + }, + { + "header": "EterImageLib/DXTCImage.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageTexture.h", + "owner_in_slice": false + }, + { + "header": "EterImageLib/Image.h", + "layer": "platform", + "reason": "include from EterImageLib/TGAImage.h", + "owner_in_slice": false + }, + { + "header": "EterImageLib/TGAImage.h", + "layer": "platform", + "reason": "include from PRTerrainLib/Terrain.h", + "owner_in_slice": false + }, + { + "header": "EterLib/AttributeData.h", + "layer": "logic", + "reason": "include from EterLib/AttributeInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/AttributeInstance.h", + "layer": "logic", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Camera.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplicationModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/CollisionData.h", + "layer": "logic", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ColorTransitionHelper.h", + "layer": "logic", + "reason": "include from EterLib/SkyBox.h", + "owner_in_slice": false + }, + { + "header": "EterLib/CullingManager.h", + "layer": "platform", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Decal.h", + "layer": "platform", + "reason": "include from GameLib/TerrainDecal.h", + "owner_in_slice": false + }, + { + "header": "EterLib/DibBar.h", + "layer": "platform", + "reason": "include from EterLib/TextBar.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Dimm.h", + "layer": "logic", + "reason": "include from EterLib/IME.h", + "owner_in_slice": false + }, + { + "header": "EterLib/FileLoaderThread.h", + "layer": "platform", + "reason": "include from EterLib/ResourceManager.h", + "owner_in_slice": false + }, + { + "header": "EterLib/FuncObject.h", + "layer": "logic", + "reason": "include from UserInterface/AccountConnector.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpBase.h", + "layer": "platform", + "reason": "include from EterLib/GrpTexture.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpCollisionObject.h", + "layer": "platform", + "reason": "include from EterGrnLib/ModelInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpColor.h", + "layer": "platform", + "reason": "include from EterLib/GrpColorInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpColorInstance.h", + "layer": "platform", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpDIB.h", + "layer": "platform", + "reason": "include from EterLib/DibBar.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpDetector.h", + "layer": "platform", + "reason": "include from EterLib/GrpBase.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpDevice.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpExpandedImageInstance.h", + "layer": "platform", + "reason": "implicit CGraphicExpandedImageInstance from EterPythonLib/PythonGraphicImageModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpFontTexture.h", + "layer": "platform", + "reason": "include from EterLib/GrpText.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpImage.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpImageInstance.h", + "layer": "platform", + "reason": "include from EterGrnLib/Material.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpImageTexture.h", + "layer": "platform", + "reason": "include from EterLib/GrpImage.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpIndexBuffer.h", + "layer": "platform", + "reason": "include from EterGrnLib/Model.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpLightManager.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpMarkInstance.h", + "layer": "platform", + "reason": "implicit CGraphicMarkInstance from EterPythonLib/PythonWindow.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpObjectInstance.h", + "layer": "platform", + "reason": "include from EterGrnLib/ThingInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpScreen.h", + "layer": "platform", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpShadowTexture.h", + "layer": "platform", + "reason": "include from EterGrnLib/ThingInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpSubImage.h", + "layer": "platform", + "reason": "include from GameLib/ItemData.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpText.h", + "layer": "platform", + "reason": "implicit CGraphicText from EterPythonLib/PythonGraphicTextModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpTextInstance.h", + "layer": "platform", + "reason": "implicit CGraphicTextInstance from EterPythonLib/PythonGraphicTextModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpTexture.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageTexture.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpVertexBuffer.h", + "layer": "platform", + "reason": "include from EterGrnLib/Model.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpVertexBufferDynamic.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/IME.h", + "layer": "platform", + "reason": "include from UserInterface/PythonIME.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Input.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/LensFlare.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "EterLib/MSApplication.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/MSWindow.h", + "layer": "platform", + "reason": "include from EterLib/MSApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Mutex.h", + "layer": "platform", + "reason": "include from GameLib/AreaLoaderThread.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetAddress.h", + "layer": "logic", + "reason": "include from EterLib/NetStream.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetDevice.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetPacketHeaderMap.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStream.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetStream.h", + "layer": "logic", + "reason": "include from UserInterface/ServerStateChecker.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Pool.h", + "layer": "logic", + "reason": "include from EterLib/GrpImageInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Profiler.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Ray.h", + "layer": "logic", + "reason": "include from EterLib/Camera.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Ref.h", + "layer": "logic", + "reason": "include from EterGrnLib/Material.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ReferenceObject.h", + "layer": "logic", + "reason": "include from EterGrnLib/Material.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Resource.h", + "layer": "logic", + "reason": "include from EterLib/GrpImage.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ResourceManager.h", + "layer": "logic", + "reason": "include from GameLib/DungeonBlock.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ScreenFilter.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "EterLib/SkyBox.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "EterLib/StateManager.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/TextBar.h", + "layer": "platform", + "reason": "include from EterPythonLib/PythonGraphicModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/TextFileLoader.h", + "layer": "logic", + "reason": "include from EffectLib/SimpleLightData.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Thread.h", + "layer": "platform", + "reason": "include from EterLib/FileLoaderThread.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Util.h", + "layer": "logic", + "reason": "include from EterLib/TextFileLoader.h", + "owner_in_slice": false + }, + { + "header": "EterLib/parser.h", + "layer": "logic", + "reason": "include from UserInterface/PythonEventManager.h", + "owner_in_slice": false + }, + { + "header": "EterLocale/CodePageId.h", + "layer": "logic", + "reason": "implicit CP_ARABIC from EterPythonLib/PythonWindow.cpp", + "owner_in_slice": false + }, + { + "header": "EterPack/EterPack.h", + "layer": "logic", + "reason": "include from EterPack/EterPackManager.h", + "owner_in_slice": false + }, + { + "header": "EterPack/EterPackManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplicationModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterPack/md5.h", + "layer": "logic", + "reason": "include from EterPack/EterPack.h", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonGraphic.h", + "layer": "python", + "reason": "implicit CPythonGraphic from EterPythonLib/PythonGraphicModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonGridSlotWindow.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonSlotWindow.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonWindow.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": true + }, + { + "header": "EterPythonLib/PythonWindowManager.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManager.cpp", + "owner_in_slice": true + }, + { + "header": "GameLib/ActorInstance.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.h", + "owner_in_slice": false + }, + { + "header": "GameLib/ActorInstanceInterface.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/Area.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/AreaLoaderThread.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/AreaTerrain.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/DungeonBlock.h", + "layer": "logic", + "reason": "include from GameLib/Area.h", + "owner_in_slice": false + }, + { + "header": "GameLib/FlyTarget.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/FlyingObjectManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "GameLib/GameEventManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "GameLib/GameType.h", + "layer": "logic", + "reason": "implicit MOTION_KEY from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/GameUtil.h", + "layer": "logic", + "reason": "implicit DEGREE_DIRECTION_LEFT from UserInterface/PythonApplicationModule.cpp", + "owner_in_slice": false + }, + { + "header": "GameLib/Interface.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/ItemData.h", + "layer": "logic", + "reason": "include from UserInterface/PythonSkill.h", + "owner_in_slice": false + }, + { + "header": "GameLib/ItemManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapBase.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonBackground.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapOutdoor.h", + "layer": "logic", + "reason": "include from GameLib/MapManager.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapType.h", + "layer": "logic", + "reason": "include from GameLib/Area.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapUtil.h", + "layer": "logic", + "reason": "include from GameLib/PhysicsObject.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MonsterAreaInfo.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/PhysicsObject.h", + "layer": "logic", + "reason": "include from UserInterface/PythonCharacterManager.h", + "owner_in_slice": false + }, + { + "header": "GameLib/PropertyManager.h", + "layer": "logic", + "reason": "include from GameLib/MapManager.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceData.h", + "layer": "logic", + "reason": "include from UserInterface/Packet.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceMotionData.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceMotionDataEvent.h", + "layer": "logic", + "reason": "include from GameLib/RaceMotionData.h", + "owner_in_slice": false + }, + { + "header": "GameLib/SnowEnvironment.h", + "layer": "platform", + "reason": "include from UserInterface/PythonBackground.h", + "owner_in_slice": false + }, + { + "header": "GameLib/TerrainDecal.h", + "layer": "platform", + "reason": "include from UserInterface/PythonBackground.h", + "owner_in_slice": false + }, + { + "header": "GameLib/TerrainPatch.h", + "layer": "platform", + "reason": "include from GameLib/AreaTerrain.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundBase.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager3D.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundData.h", + "layer": "platform", + "reason": "include from MilesLib/SoundBase.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundInstance.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager3D.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManager.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManager2D.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManager3D.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManagerStream.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/Type.h", + "layer": "platform", + "reason": "include from GameLib/RaceMotionData.h", + "owner_in_slice": false + }, + { + "header": "PRTerrainLib/Terrain.h", + "layer": "platform", + "reason": "include from GameLib/AreaTerrain.h", + "owner_in_slice": false + }, + { + "header": "PRTerrainLib/TerrainType.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "PRTerrainLib/TextureSet.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "ScriptLib/PythonLauncher.h", + "layer": "python", + "reason": "include from ScriptLib/PythonLauncher.cpp", + "owner_in_slice": true + }, + { + "header": "ScriptLib/PythonMarshal.h", + "layer": "python", + "reason": "implicit _PyMarshal_ReadLastObjectFromFile from ScriptLib/PythonLauncher.cpp", + "owner_in_slice": false + }, + { + "header": "ScriptLib/PythonUtils.h", + "layer": "python", + "reason": "implicit PyTuple_GetFloat from EterPythonLib/PythonGraphicImageModule.cpp", + "owner_in_slice": false + }, + { + "header": "ScriptLib/Resource.h", + "layer": "python", + "reason": "implicit CPythonResource from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeForest.h", + "layer": "platform", + "reason": "include from SpeedTreeLib/SpeedTreeForestDirectX8.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeForestDirectX8.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeMaterial.h", + "layer": "platform", + "reason": "include from SpeedTreeLib/SpeedTreeWrapper.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeWrapper.h", + "layer": "platform", + "reason": "include from GameLib/Area.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/frustum.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/pool.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/sphere.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/spherepack.h", + "layer": "platform", + "reason": "include from EterLib/CullingManager.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/vector.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractApplication.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractCharacterManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonCharacterManager.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractChat.h", + "layer": "logic", + "reason": "include from UserInterface/PythonChat.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractPlayer.h", + "layer": "logic", + "reason": "include from UserInterface/PythonPlayer.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractSingleton.h", + "layer": "logic", + "reason": "include from UserInterface/AbstractApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AccountConnector.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AffectFlagContainer.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/GameType.h", + "layer": "logic", + "reason": "implicit TItemData from UserInterface/AbstractPlayer.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/GuildMarkDownloader.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/GuildMarkUploader.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/Hackshield.h", + "layer": "logic", + "reason": "include from UserInterface/Packet.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/HackshieldLicense.h", + "layer": "logic", + "reason": "include from UserInterface/Hackshield.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/InstanceBase.h", + "layer": "logic", + "reason": "include from UserInterface/PythonCharacterManager.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/InsultChecker.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStream.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/Locale.h", + "layer": "logic", + "reason": "implicit LocaleService_ForceSetLocale from UserInterface/PythonApplicationModule.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/Locale_inc.h", + "layer": "logic", + "reason": "include from UserInterface/Locale.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/MarkImage.h", + "layer": "logic", + "reason": "include from UserInterface/GuildMarkUploader.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/MarkManager.h", + "layer": "logic", + "reason": "include from UserInterface/GuildMarkDownloader.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/MovieMan.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/Packet.h", + "layer": "logic", + "reason": "include from UserInterface/PythonGuild.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonApplication.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplicationModule.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonBackground.h", + "layer": "logic", + "reason": "include from UserInterface/PythonMiniMap.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonCharacterManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonChat.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonEventManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonExchange.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonGuild.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonIME.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonItem.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonMessenger.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonMiniMap.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonNetworkStream.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonNonPlayer.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonPlayer.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonQuest.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonSafeBox.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonShop.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonSkill.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonSystem.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonTextTail.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/ServerStateChecker.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/resource.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplicationModule.cpp", + "owner_in_slice": false + } + ], + "stdafx_supplied": [ + "EterBase/StdAfx.h", + "EterLib/GrpExpandedImageInstance.h", + "EterLib/GrpMarkInstance.h", + "EterLib/GrpText.h", + "EterLib/GrpTextInstance.h", + "EterLocale/CodePageId.h", + "EterPythonLib/PythonGraphic.h", + "GameLib/GameType.h", + "GameLib/GameUtil.h", + "ScriptLib/PythonMarshal.h", + "ScriptLib/PythonUtils.h", + "ScriptLib/Resource.h", + "UserInterface/GameType.h", + "UserInterface/Locale.h" + ], + "system_includes": [ + "algorithm", + "assert.h", + "cryptopp/cryptlib.h", + "d3d8.h", + "d3d8types.h", + "d3dx8.h", + "deque", + "float.h", + "functional", + "granny.h", + "il/il.h", + "imagehlp.h", + "imm.h", + "list", + "lzo/lzo1x.h", + "map", + "math.h", + "mmsystem.h", + "mss.h", + "python-2.7/frameobject.h", + "queue", + "rpc.h", + "rpcndr.h", + "set", + "shlobj.h", + "speedtreert.h", + "sstream", + "stack", + "stdio.h", + "string", + "time.h", + "unknwn.h", + "unordered_map", + "vector", + "windows.h" + ], + "python_scripts": [ + "constinfo.py", + "debuginfo.py", + "emotion.py", + "intrologo.py", + "localeinfo.py", + "mousemodule.py", + "musicinfo.py", + "networkmodule.py", + "playersettingmodule.py", + "prototype.py", + "stringcommander.py", + "system.py", + "ui.py", + "uicandidate.py", + "uiphasecurtain.py", + "uiscriptlocale.py" + ], + "native_modules": [ + { + "module": "__builtin__", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "_weakref", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "app", + "provider": "UserInterface/PythonApplicationModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "background", + "provider": "UserInterface/PythonBackgroundModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "chr", + "provider": "UserInterface/PythonCharacterModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "chrmgr", + "provider": "UserInterface/PythonCharacterManagerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "dbg", + "provider": "ScriptLib/PythonDebugModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "effect", + "provider": "UserInterface/PythonEffectModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "grp", + "provider": "EterPythonLib/PythonGraphicModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "grpImage", + "provider": "EterPythonLib/PythonGraphicImageModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "grpText", + "provider": "EterPythonLib/PythonGraphicTextModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "guild", + "provider": "UserInterface/PythonGuild.cpp", + "real": false, + "layer": "python" + }, + { + "module": "ime", + "provider": "UserInterface/PythonIMEModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "imp", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "item", + "provider": "UserInterface/PythonItemModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "marshal", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "net", + "provider": "UserInterface/PythonNetworkStreamModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "pack", + "provider": "UserInterface/PythonPackModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "player", + "provider": "UserInterface/PythonPlayerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "skill", + "provider": "UserInterface/PythonSkill.cpp", + "real": false, + "layer": "python" + }, + { + "module": "snd", + "provider": "UserInterface/PythonSoundManagerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "sys", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "systemSetting", + "provider": "UserInterface/PythonSystemModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "wndMgr", + "provider": "EterPythonLib/PythonWindowManagerModule.cpp", + "real": true, + "layer": "python" + } + ], + "ambiguous_symbols": {} +} diff --git a/audit/slices/2V1.json b/audit/slices/2V1.json new file mode 100644 index 00000000..994a0255 --- /dev/null +++ b/audit/slices/2V1.json @@ -0,0 +1,1745 @@ +{ + "slice": "2V1", + "generated_by": ".agents/skills/metin2-40250-parity-audit/scripts/port_deps.py slices --write", + "units": [ + { + "unit": "ScriptLib/PythonLauncher.cpp", + "layer": "python", + "new": false + }, + { + "unit": "UserInterface/PythonPackModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonWindow.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonWindowManager.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonWindowManagerModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonGraphicImageModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonGraphicModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonGraphicTextModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonGraphicThingModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "UserInterface/PythonApplicationModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStream.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "UserInterface/PythonNetworkStreamPhaseHandShake.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "UserInterface/PythonNetworkStreamPhaseLogin.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "UserInterface/PythonNetworkStreamPhaseSelect.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "UserInterface/PythonNetworkStreamPhaseLoading.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "UserInterface/PythonNetworkStreamModule.cpp", + "layer": "python", + "new": true + }, + { + "unit": "UserInterface/AccountConnector.cpp", + "layer": "logic", + "new": true + } + ], + "headers": [ + { + "header": "EffectLib/EffectData.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectElementBase.h", + "layer": "platform", + "reason": "include from EffectLib/SimpleLightData.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectElementBaseInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectManager.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectManager.h", + "layer": "platform", + "reason": "include from GameLib/RaceMotionDataEvent.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectMesh.h", + "layer": "platform", + "reason": "include from EffectLib/EffectMeshInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectMeshInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectUpdateDecorator.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EmitterProperty.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/FrameController.h", + "layer": "platform", + "reason": "include from EffectLib/EffectMeshInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleInstance.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleProperty.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleSystemData.h", + "layer": "platform", + "reason": "include from EffectLib/EffectData.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleSystemInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/SimpleLightData.h", + "layer": "platform", + "reason": "include from EffectLib/SimpleLightInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/SimpleLightInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/Type.h", + "layer": "platform", + "reason": "include from EffectLib/SimpleLightData.h", + "owner_in_slice": false + }, + { + "header": "EterBase/CRC32.h", + "layer": "platform", + "reason": "include from EterPythonLib/PythonWindow.cpp", + "owner_in_slice": false + }, + { + "header": "EterBase/Debug.h", + "layer": "platform", + "reason": "include from EterLib/Pool.h", + "owner_in_slice": false + }, + { + "header": "EterBase/FileBase.h", + "layer": "platform", + "reason": "include from EterBase/MappedFile.h", + "owner_in_slice": false + }, + { + "header": "EterBase/FileLoader.h", + "layer": "platform", + "reason": "include from EterLib/TextFileLoader.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Filename.h", + "layer": "platform", + "reason": "include from EterBase/StdAfx.h", + "owner_in_slice": false + }, + { + "header": "EterBase/MappedFile.h", + "layer": "platform", + "reason": "include from EterPack/EterPack.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Poly/Poly.h", + "layer": "platform", + "reason": "include from UserInterface/PythonSkill.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Poly/SymTable.h", + "layer": "platform", + "reason": "include from EterBase/Poly/Poly.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Random.h", + "layer": "platform", + "reason": "include from EffectLib/EffectUpdateDecorator.h", + "owner_in_slice": false + }, + { + "header": "EterBase/ServiceDefs.h", + "layer": "platform", + "reason": "include from EterBase/StdAfx.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Singleton.h", + "layer": "platform", + "reason": "include from EterPack/EterPackManager.h", + "owner_in_slice": false + }, + { + "header": "EterBase/StdAfx.h", + "layer": "platform", + "reason": "implicit stricmp from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterBase/Stl.h", + "layer": "platform", + "reason": "include from EterPack/EterPackManager.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Timer.h", + "layer": "platform", + "reason": "include from EterLib/Profiler.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Utils.h", + "layer": "platform", + "reason": "include from EterPythonLib/PythonWindow.h", + "owner_in_slice": false + }, + { + "header": "EterBase/cipher.h", + "layer": "platform", + "reason": "include from EterLib/NetStream.h", + "owner_in_slice": false + }, + { + "header": "EterBase/lzo.h", + "layer": "platform", + "reason": "include from EterBase/MappedFile.h", + "owner_in_slice": false + }, + { + "header": "EterBase/tea.h", + "layer": "platform", + "reason": "include from UserInterface/AccountConnector.cpp", + "owner_in_slice": false + }, + { + "header": "EterBase/vk.h", + "layer": "platform", + "reason": "include from EterBase/StdAfx.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/LODController.h", + "layer": "platform", + "reason": "include from EterGrnLib/ThingInstance.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Material.h", + "layer": "platform", + "reason": "include from EterGrnLib/Mesh.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Mesh.h", + "layer": "platform", + "reason": "include from EterGrnLib/Model.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Model.h", + "layer": "platform", + "reason": "include from EterGrnLib/Thing.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/ModelInstance.h", + "layer": "platform", + "reason": "include from EterGrnLib/LODController.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Motion.h", + "layer": "platform", + "reason": "include from EterGrnLib/Thing.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Thing.h", + "layer": "platform", + "reason": "include from GameLib/RaceData.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/ThingInstance.h", + "layer": "platform", + "reason": "include from GameLib/ActorInstanceInterface.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Util.h", + "layer": "platform", + "reason": "include from EterGrnLib/Material.h", + "owner_in_slice": false + }, + { + "header": "EterImageLib/DXTCImage.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageTexture.h", + "owner_in_slice": false + }, + { + "header": "EterImageLib/Image.h", + "layer": "platform", + "reason": "include from EterImageLib/TGAImage.h", + "owner_in_slice": false + }, + { + "header": "EterImageLib/TGAImage.h", + "layer": "platform", + "reason": "include from PRTerrainLib/Terrain.h", + "owner_in_slice": false + }, + { + "header": "EterLib/AttributeData.h", + "layer": "logic", + "reason": "include from EterLib/AttributeInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/AttributeInstance.h", + "layer": "logic", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Camera.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplicationModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/CollisionData.h", + "layer": "logic", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ColorTransitionHelper.h", + "layer": "logic", + "reason": "include from EterLib/SkyBox.h", + "owner_in_slice": false + }, + { + "header": "EterLib/CullingManager.h", + "layer": "platform", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Decal.h", + "layer": "platform", + "reason": "include from GameLib/TerrainDecal.h", + "owner_in_slice": false + }, + { + "header": "EterLib/DibBar.h", + "layer": "platform", + "reason": "include from EterLib/TextBar.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Dimm.h", + "layer": "logic", + "reason": "include from EterLib/IME.h", + "owner_in_slice": false + }, + { + "header": "EterLib/FileLoaderThread.h", + "layer": "platform", + "reason": "include from EterLib/ResourceManager.h", + "owner_in_slice": false + }, + { + "header": "EterLib/FuncObject.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStream.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpBase.h", + "layer": "platform", + "reason": "include from EterLib/GrpTexture.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpCollisionObject.h", + "layer": "platform", + "reason": "include from EterGrnLib/ModelInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpColor.h", + "layer": "platform", + "reason": "include from EterLib/GrpColorInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpColorInstance.h", + "layer": "platform", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpDIB.h", + "layer": "platform", + "reason": "include from EterLib/DibBar.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpDetector.h", + "layer": "platform", + "reason": "include from EterLib/GrpBase.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpDevice.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpExpandedImageInstance.h", + "layer": "platform", + "reason": "implicit CGraphicExpandedImageInstance from EterPythonLib/PythonGraphicImageModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpFontTexture.h", + "layer": "platform", + "reason": "include from EterLib/GrpText.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpImage.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpImageInstance.h", + "layer": "platform", + "reason": "include from EterGrnLib/Material.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpImageTexture.h", + "layer": "platform", + "reason": "include from EterLib/GrpImage.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpIndexBuffer.h", + "layer": "platform", + "reason": "include from EterGrnLib/Model.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpLightManager.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpMarkInstance.h", + "layer": "platform", + "reason": "implicit CGraphicMarkInstance from EterPythonLib/PythonWindow.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpObjectInstance.h", + "layer": "platform", + "reason": "include from EterGrnLib/ThingInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpScreen.h", + "layer": "platform", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpShadowTexture.h", + "layer": "platform", + "reason": "include from EterGrnLib/ThingInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpSubImage.h", + "layer": "platform", + "reason": "include from GameLib/ItemData.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpText.h", + "layer": "platform", + "reason": "implicit CGraphicText from EterPythonLib/PythonGraphicTextModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpTextInstance.h", + "layer": "platform", + "reason": "implicit CGraphicTextInstance from EterPythonLib/PythonGraphicTextModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpTexture.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageTexture.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpVertexBuffer.h", + "layer": "platform", + "reason": "include from EterGrnLib/Model.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpVertexBufferDynamic.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/IME.h", + "layer": "platform", + "reason": "include from UserInterface/PythonIME.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Input.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/LensFlare.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "EterLib/MSApplication.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/MSWindow.h", + "layer": "platform", + "reason": "include from EterLib/MSApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Mutex.h", + "layer": "platform", + "reason": "include from GameLib/AreaLoaderThread.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetAddress.h", + "layer": "logic", + "reason": "include from EterLib/NetStream.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetDevice.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetPacketHeaderMap.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStream.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetStream.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStream.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Pool.h", + "layer": "logic", + "reason": "include from EterLib/GrpImageInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Profiler.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Ray.h", + "layer": "logic", + "reason": "include from EterLib/GrpBase.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Ref.h", + "layer": "logic", + "reason": "include from EterGrnLib/Material.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ReferenceObject.h", + "layer": "logic", + "reason": "include from EterGrnLib/Material.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Resource.h", + "layer": "logic", + "reason": "include from EterLib/GrpImage.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ResourceManager.h", + "layer": "logic", + "reason": "include from GameLib/DungeonBlock.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ScreenFilter.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "EterLib/SkyBox.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "EterLib/StateManager.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/TextBar.h", + "layer": "platform", + "reason": "include from EterPythonLib/PythonGraphicModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/TextFileLoader.h", + "layer": "logic", + "reason": "include from EffectLib/SimpleLightData.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Thread.h", + "layer": "platform", + "reason": "include from EterLib/FileLoaderThread.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Util.h", + "layer": "logic", + "reason": "include from EterLib/TextFileLoader.h", + "owner_in_slice": false + }, + { + "header": "EterLib/parser.h", + "layer": "logic", + "reason": "include from UserInterface/PythonEventManager.h", + "owner_in_slice": false + }, + { + "header": "EterLocale/CodePageId.h", + "layer": "logic", + "reason": "implicit CP_ARABIC from EterPythonLib/PythonWindow.cpp", + "owner_in_slice": false + }, + { + "header": "EterPack/EterPack.h", + "layer": "logic", + "reason": "include from EterPack/EterPackManager.h", + "owner_in_slice": false + }, + { + "header": "EterPack/EterPackManager.h", + "layer": "logic", + "reason": "include from UserInterface/AccountConnector.cpp", + "owner_in_slice": false + }, + { + "header": "EterPack/md5.h", + "layer": "logic", + "reason": "include from EterPack/EterPack.h", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonGraphic.h", + "layer": "python", + "reason": "implicit CPythonGraphic from EterPythonLib/PythonGraphicModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonGridSlotWindow.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonSlotWindow.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonWindow.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": true + }, + { + "header": "EterPythonLib/PythonWindowManager.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManager.cpp", + "owner_in_slice": true + }, + { + "header": "GameLib/ActorInstance.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.h", + "owner_in_slice": false + }, + { + "header": "GameLib/ActorInstanceInterface.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/Area.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/AreaLoaderThread.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/AreaTerrain.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/DungeonBlock.h", + "layer": "logic", + "reason": "include from GameLib/Area.h", + "owner_in_slice": false + }, + { + "header": "GameLib/FlyTarget.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/FlyingObjectManager.h", + "layer": "logic", + "reason": "include from GameLib/RaceMotionDataEvent.h", + "owner_in_slice": false + }, + { + "header": "GameLib/GameEventManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "GameLib/GameType.h", + "layer": "logic", + "reason": "implicit MOTION_KEY from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/GameUtil.h", + "layer": "logic", + "reason": "implicit DEGREE_DIRECTION_LEFT from UserInterface/PythonApplicationModule.cpp", + "owner_in_slice": false + }, + { + "header": "GameLib/Interface.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/ItemData.h", + "layer": "logic", + "reason": "include from UserInterface/PythonSkill.h", + "owner_in_slice": false + }, + { + "header": "GameLib/ItemManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapBase.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonBackground.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapOutdoor.h", + "layer": "logic", + "reason": "include from GameLib/MapManager.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapType.h", + "layer": "logic", + "reason": "include from GameLib/Area.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapUtil.h", + "layer": "logic", + "reason": "include from GameLib/PhysicsObject.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MonsterAreaInfo.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/PhysicsObject.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/PropertyManager.h", + "layer": "logic", + "reason": "include from GameLib/MapManager.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceData.h", + "layer": "logic", + "reason": "include from UserInterface/Packet.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceMotionData.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceMotionDataEvent.h", + "layer": "logic", + "reason": "include from GameLib/RaceMotionData.h", + "owner_in_slice": false + }, + { + "header": "GameLib/SnowEnvironment.h", + "layer": "platform", + "reason": "include from UserInterface/PythonBackground.h", + "owner_in_slice": false + }, + { + "header": "GameLib/TerrainDecal.h", + "layer": "platform", + "reason": "include from UserInterface/PythonBackground.h", + "owner_in_slice": false + }, + { + "header": "GameLib/TerrainPatch.h", + "layer": "platform", + "reason": "include from GameLib/AreaTerrain.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundBase.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager3D.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundData.h", + "layer": "platform", + "reason": "include from MilesLib/SoundBase.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundInstance.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager3D.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManager.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManager2D.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManager3D.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManagerStream.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/Type.h", + "layer": "platform", + "reason": "include from GameLib/RaceMotionData.h", + "owner_in_slice": false + }, + { + "header": "PRTerrainLib/Terrain.h", + "layer": "platform", + "reason": "include from GameLib/AreaTerrain.h", + "owner_in_slice": false + }, + { + "header": "PRTerrainLib/TerrainType.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "PRTerrainLib/TextureSet.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "ScriptLib/PythonLauncher.h", + "layer": "python", + "reason": "include from ScriptLib/PythonLauncher.cpp", + "owner_in_slice": true + }, + { + "header": "ScriptLib/PythonMarshal.h", + "layer": "python", + "reason": "implicit _PyMarshal_ReadLastObjectFromFile from ScriptLib/PythonLauncher.cpp", + "owner_in_slice": false + }, + { + "header": "ScriptLib/PythonUtils.h", + "layer": "python", + "reason": "implicit PyTuple_GetFloat from EterPythonLib/PythonGraphicImageModule.cpp", + "owner_in_slice": false + }, + { + "header": "ScriptLib/Resource.h", + "layer": "python", + "reason": "implicit CPythonResource from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeForest.h", + "layer": "platform", + "reason": "include from SpeedTreeLib/SpeedTreeForestDirectX8.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeForestDirectX8.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeMaterial.h", + "layer": "platform", + "reason": "include from SpeedTreeLib/SpeedTreeWrapper.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeWrapper.h", + "layer": "platform", + "reason": "include from GameLib/Area.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/frustum.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/pool.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/sphere.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/spherepack.h", + "layer": "platform", + "reason": "include from EterLib/CullingManager.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/vector.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractApplication.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractCharacterManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonCharacterManager.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractChat.h", + "layer": "logic", + "reason": "include from UserInterface/PythonChat.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractPlayer.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamModule.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractSingleton.h", + "layer": "logic", + "reason": "include from UserInterface/AbstractPlayer.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AccountConnector.h", + "layer": "logic", + "reason": "include from UserInterface/AccountConnector.cpp", + "owner_in_slice": true + }, + { + "header": "UserInterface/AffectFlagContainer.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/GameType.h", + "layer": "logic", + "reason": "implicit TItemData from UserInterface/AbstractPlayer.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/GuildMarkDownloader.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamModule.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/GuildMarkUploader.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamModule.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/Hackshield.h", + "layer": "logic", + "reason": "include from UserInterface/AccountConnector.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/HackshieldLicense.h", + "layer": "logic", + "reason": "include from UserInterface/Hackshield.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/InstanceBase.h", + "layer": "logic", + "reason": "include from UserInterface/NetworkActorManager.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/InsultChecker.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStream.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/Locale.h", + "layer": "logic", + "reason": "implicit LocaleService_GetOpenIDAuthKey from UserInterface/AccountConnector.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/Locale_inc.h", + "layer": "logic", + "reason": "include from UserInterface/Locale.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/MarkImage.h", + "layer": "logic", + "reason": "include from UserInterface/MarkManager.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/MarkManager.h", + "layer": "logic", + "reason": "include from UserInterface/GuildMarkDownloader.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/MovieMan.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/NetworkActorManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseLoading.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/Packet.h", + "layer": "logic", + "reason": "include from UserInterface/AccountConnector.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/ProcessCRC.h", + "layer": "platform", + "reason": "include from UserInterface/PythonNetworkStream.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonApplication.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseLoading.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonBackground.h", + "layer": "logic", + "reason": "include from UserInterface/PythonMiniMap.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonCharacterManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonChat.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonEventManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonExchange.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonGuild.h", + "layer": "python", + "reason": "include from UserInterface/PythonNetworkStreamModule.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonIME.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonItem.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonMessenger.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonMiniMap.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonNetworkStream.h", + "layer": "logic", + "reason": "include from UserInterface/AccountConnector.cpp", + "owner_in_slice": true + }, + { + "header": "UserInterface/PythonNonPlayer.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonPlayer.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonQuest.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonSafeBox.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonShop.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonSkill.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonSystem.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonTextTail.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/ServerStateChecker.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/Test.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamModule.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/WiseLogicXTrap.h", + "layer": "platform", + "reason": "include from UserInterface/AccountConnector.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/resource.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplicationModule.cpp", + "owner_in_slice": false + } + ], + "stdafx_supplied": [ + "EterBase/StdAfx.h", + "EterLib/GrpExpandedImageInstance.h", + "EterLib/GrpMarkInstance.h", + "EterLib/GrpText.h", + "EterLib/GrpTextInstance.h", + "EterLocale/CodePageId.h", + "EterPythonLib/PythonGraphic.h", + "GameLib/GameType.h", + "GameLib/GameUtil.h", + "ScriptLib/PythonMarshal.h", + "ScriptLib/PythonUtils.h", + "ScriptLib/Resource.h", + "UserInterface/GameType.h", + "UserInterface/Locale.h" + ], + "system_includes": [ + "algorithm", + "assert.h", + "cryptopp/cryptlib.h", + "d3d8.h", + "d3d8types.h", + "d3dx8.h", + "deque", + "float.h", + "functional", + "granny.h", + "il/il.h", + "imagehlp.h", + "imm.h", + "list", + "lzo/lzo1x.h", + "map", + "math.h", + "mmsystem.h", + "mss.h", + "python-2.7/frameobject.h", + "queue", + "rpc.h", + "rpcndr.h", + "set", + "shlobj.h", + "speedtreert.h", + "sstream", + "stack", + "stdio.h", + "string", + "time.h", + "unknwn.h", + "unordered_map", + "vector", + "windows.h" + ], + "python_scripts": [ + "colorinfo.py", + "consolemodule.py", + "constinfo.py", + "debuginfo.py", + "emotion.py", + "interfacemodule.py", + "introcreate.py", + "introempire.py", + "introloading.py", + "intrologin.py", + "intrologo.py", + "introselect.py", + "localeinfo.py", + "mousemodule.py", + "musicinfo.py", + "networkmodule.py", + "playersettingmodule.py", + "prototype.py", + "servercommandparser.py", + "serverinfo.py", + "stringcommander.py", + "system.py", + "ui.py", + "uiaffectshower.py", + "uiattachmetin.py", + "uicandidate.py", + "uicharacter.py", + "uichat.py", + "uicommon.py", + "uicube.py", + "uidragonsoul.py", + "uiequipmentdialog.py", + "uiexchange.py", + "uigamebutton.py", + "uigameoption.py", + "uiguild.py", + "uihelp.py", + "uiinventory.py", + "uimapnameshower.py", + "uimessenger.py", + "uiminimap.py", + "uioption.py", + "uiparty.py", + "uiphasecurtain.py", + "uipickmoney.py", + "uiplayergauge.py", + "uipointreset.py", + "uiprivateshopbuilder.py", + "uiquest.py", + "uirefine.py", + "uirestart.py", + "uisafebox.py", + "uiscriptlocale.py", + "uiselectitem.py", + "uiselectmusic.py", + "uishop.py", + "uisystem.py", + "uisystemoption.py", + "uitarget.py", + "uitaskbar.py", + "uitip.py", + "uitooltip.py", + "uiuploadmark.py", + "uiwhisper.py" + ], + "native_modules": [ + { + "module": "ServerStateChecker", + "provider": "UserInterface/ServerStateCheckerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "__builtin__", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "_weakref", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "app", + "provider": "UserInterface/PythonApplicationModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "background", + "provider": "UserInterface/PythonBackgroundModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "chat", + "provider": "UserInterface/PythonChatModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "chr", + "provider": "UserInterface/PythonCharacterModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "chrmgr", + "provider": "UserInterface/PythonCharacterManagerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "dbg", + "provider": "ScriptLib/PythonDebugModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "effect", + "provider": "UserInterface/PythonEffectModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "event", + "provider": "UserInterface/PythonEventManagerMoudle.cpp", + "real": false, + "layer": "python" + }, + { + "module": "exchange", + "provider": "UserInterface/PythonExchangeModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "grp", + "provider": "EterPythonLib/PythonGraphicModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "grpImage", + "provider": "EterPythonLib/PythonGraphicImageModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "grpText", + "provider": "EterPythonLib/PythonGraphicTextModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "guild", + "provider": "UserInterface/PythonGuild.cpp", + "real": false, + "layer": "python" + }, + { + "module": "ime", + "provider": "UserInterface/PythonIMEModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "imp", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "item", + "provider": "UserInterface/PythonItemModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "marshal", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "math", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "messenger", + "provider": "UserInterface/PythonMessenger.cpp", + "real": false, + "layer": "python" + }, + { + "module": "miniMap", + "provider": "UserInterface/PythonMiniMapModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "net", + "provider": "UserInterface/PythonNetworkStreamModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "nonplayer", + "provider": "UserInterface/PythonNonPlayerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "os", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "pack", + "provider": "UserInterface/PythonPackModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "player", + "provider": "UserInterface/PythonPlayerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "quest", + "provider": "UserInterface/PythonQuest.cpp", + "real": false, + "layer": "python" + }, + { + "module": "safebox", + "provider": "UserInterface/PythonSafeBox.cpp", + "real": false, + "layer": "python" + }, + { + "module": "shop", + "provider": "UserInterface/PythonShop.cpp", + "real": false, + "layer": "python" + }, + { + "module": "skill", + "provider": "UserInterface/PythonSkill.cpp", + "real": false, + "layer": "python" + }, + { + "module": "snd", + "provider": "UserInterface/PythonSoundManagerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "stat", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "sys", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "systemSetting", + "provider": "UserInterface/PythonSystemModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "textTail", + "provider": "UserInterface/PythonTextTailModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "time", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "wndMgr", + "provider": "EterPythonLib/PythonWindowManagerModule.cpp", + "real": true, + "layer": "python" + } + ], + "ambiguous_symbols": {} +} diff --git a/audit/slices/2V2.json b/audit/slices/2V2.json new file mode 100644 index 00000000..3813944b --- /dev/null +++ b/audit/slices/2V2.json @@ -0,0 +1,1780 @@ +{ + "slice": "2V2", + "generated_by": ".agents/skills/metin2-40250-parity-audit/scripts/port_deps.py slices --write", + "units": [ + { + "unit": "ScriptLib/PythonLauncher.cpp", + "layer": "python", + "new": false + }, + { + "unit": "UserInterface/PythonPackModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonWindow.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonWindowManager.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonWindowManagerModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonGraphicImageModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonGraphicModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonGraphicTextModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonGraphicThingModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "UserInterface/PythonApplicationModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStream.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStreamPhaseHandShake.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStreamPhaseLogin.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStreamPhaseSelect.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStreamPhaseLoading.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStreamModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "UserInterface/AccountConnector.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStreamPhaseGame.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "UserInterface/PythonCharacterManager.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "UserInterface/InstanceBase.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "GameLib/ActorInstance.cpp", + "layer": "logic", + "new": true + } + ], + "headers": [ + { + "header": "EffectLib/EffectData.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectElementBase.h", + "layer": "platform", + "reason": "include from EffectLib/SimpleLightData.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectElementBaseInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectManager.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectManager.h", + "layer": "platform", + "reason": "include from GameLib/RaceMotionDataEvent.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectMesh.h", + "layer": "platform", + "reason": "include from EffectLib/EffectMeshInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectMeshInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectUpdateDecorator.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EmitterProperty.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/FrameController.h", + "layer": "platform", + "reason": "include from EffectLib/EffectMeshInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleInstance.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleProperty.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleSystemData.h", + "layer": "platform", + "reason": "include from EffectLib/EffectData.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleSystemInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/SimpleLightData.h", + "layer": "platform", + "reason": "include from EffectLib/SimpleLightInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/SimpleLightInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/Type.h", + "layer": "platform", + "reason": "include from EffectLib/SimpleLightData.h", + "owner_in_slice": false + }, + { + "header": "EterBase/CRC32.h", + "layer": "platform", + "reason": "include from EterPythonLib/PythonWindow.cpp", + "owner_in_slice": false + }, + { + "header": "EterBase/Debug.h", + "layer": "platform", + "reason": "include from EterLib/Pool.h", + "owner_in_slice": false + }, + { + "header": "EterBase/FileBase.h", + "layer": "platform", + "reason": "include from EterBase/MappedFile.h", + "owner_in_slice": false + }, + { + "header": "EterBase/FileLoader.h", + "layer": "platform", + "reason": "include from EterLib/TextFileLoader.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Filename.h", + "layer": "platform", + "reason": "implicit CFileNameHelper from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "EterBase/MappedFile.h", + "layer": "platform", + "reason": "include from EterLib/TextFileLoader.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Poly/Poly.h", + "layer": "platform", + "reason": "include from UserInterface/PythonSkill.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Poly/SymTable.h", + "layer": "platform", + "reason": "include from EterBase/Poly/Poly.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Random.h", + "layer": "platform", + "reason": "include from EffectLib/EffectUpdateDecorator.h", + "owner_in_slice": false + }, + { + "header": "EterBase/ServiceDefs.h", + "layer": "platform", + "reason": "include from EterBase/StdAfx.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Singleton.h", + "layer": "platform", + "reason": "include from EterLib/CullingManager.h", + "owner_in_slice": false + }, + { + "header": "EterBase/StdAfx.h", + "layer": "platform", + "reason": "implicit stricmp from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterBase/Stl.h", + "layer": "platform", + "reason": "include from EterGrnLib/ThingInstance.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Timer.h", + "layer": "platform", + "reason": "include from EterLib/Profiler.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Utils.h", + "layer": "platform", + "reason": "include from EterPythonLib/PythonWindow.h", + "owner_in_slice": false + }, + { + "header": "EterBase/cipher.h", + "layer": "platform", + "reason": "include from EterLib/NetStream.h", + "owner_in_slice": false + }, + { + "header": "EterBase/lzo.h", + "layer": "platform", + "reason": "include from EterBase/MappedFile.h", + "owner_in_slice": false + }, + { + "header": "EterBase/tea.h", + "layer": "platform", + "reason": "include from EterLib/NetStream.h", + "owner_in_slice": false + }, + { + "header": "EterBase/vk.h", + "layer": "platform", + "reason": "include from EterBase/StdAfx.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/LODController.h", + "layer": "platform", + "reason": "include from EterGrnLib/ThingInstance.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Material.h", + "layer": "platform", + "reason": "include from EterGrnLib/Mesh.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Mesh.h", + "layer": "platform", + "reason": "include from EterGrnLib/Model.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Model.h", + "layer": "platform", + "reason": "include from EterGrnLib/Thing.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/ModelInstance.h", + "layer": "platform", + "reason": "include from EterGrnLib/LODController.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Motion.h", + "layer": "platform", + "reason": "include from EterGrnLib/Thing.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Thing.h", + "layer": "platform", + "reason": "include from GameLib/RaceData.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/ThingInstance.h", + "layer": "platform", + "reason": "include from GameLib/ActorInstanceInterface.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Util.h", + "layer": "platform", + "reason": "include from EterGrnLib/Material.h", + "owner_in_slice": false + }, + { + "header": "EterImageLib/DXTCImage.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageTexture.h", + "owner_in_slice": false + }, + { + "header": "EterImageLib/Image.h", + "layer": "platform", + "reason": "include from EterImageLib/TGAImage.h", + "owner_in_slice": false + }, + { + "header": "EterImageLib/TGAImage.h", + "layer": "platform", + "reason": "include from PRTerrainLib/Terrain.h", + "owner_in_slice": false + }, + { + "header": "EterLib/AttributeData.h", + "layer": "logic", + "reason": "include from EterLib/AttributeInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/AttributeInstance.h", + "layer": "logic", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Camera.h", + "layer": "logic", + "reason": "include from UserInterface/PythonCharacterManager.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/CollisionData.h", + "layer": "logic", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ColorTransitionHelper.h", + "layer": "logic", + "reason": "include from EterLib/SkyBox.h", + "owner_in_slice": false + }, + { + "header": "EterLib/CullingManager.h", + "layer": "platform", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Decal.h", + "layer": "platform", + "reason": "include from GameLib/TerrainDecal.h", + "owner_in_slice": false + }, + { + "header": "EterLib/DibBar.h", + "layer": "platform", + "reason": "include from EterLib/TextBar.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Dimm.h", + "layer": "logic", + "reason": "include from EterLib/IME.h", + "owner_in_slice": false + }, + { + "header": "EterLib/FileLoaderThread.h", + "layer": "platform", + "reason": "include from EterLib/ResourceManager.h", + "owner_in_slice": false + }, + { + "header": "EterLib/FuncObject.h", + "layer": "logic", + "reason": "include from UserInterface/AccountConnector.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpBase.h", + "layer": "platform", + "reason": "include from EterLib/GrpVertexBuffer.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpCollisionObject.h", + "layer": "platform", + "reason": "include from EterLib/GrpScreen.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpColor.h", + "layer": "platform", + "reason": "include from EterLib/GrpColorInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpColorInstance.h", + "layer": "platform", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpDIB.h", + "layer": "platform", + "reason": "include from EterLib/DibBar.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpDetector.h", + "layer": "platform", + "reason": "include from EterLib/GrpBase.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpDevice.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpExpandedImageInstance.h", + "layer": "platform", + "reason": "implicit CGraphicExpandedImageInstance from EterPythonLib/PythonGraphicImageModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpFontTexture.h", + "layer": "platform", + "reason": "include from EterLib/GrpText.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpImage.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpImageInstance.h", + "layer": "platform", + "reason": "include from SpeedTreeLib/SpeedTreeWrapper.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpImageTexture.h", + "layer": "platform", + "reason": "include from EterLib/GrpImage.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpIndexBuffer.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpLightManager.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpMarkInstance.h", + "layer": "platform", + "reason": "implicit CGraphicMarkInstance from EterPythonLib/PythonWindow.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpObjectInstance.h", + "layer": "platform", + "reason": "include from SpeedTreeLib/SpeedTreeWrapper.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpScreen.h", + "layer": "platform", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpShadowTexture.h", + "layer": "platform", + "reason": "include from EterGrnLib/ThingInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpSubImage.h", + "layer": "platform", + "reason": "include from GameLib/ItemData.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpText.h", + "layer": "platform", + "reason": "implicit CGraphicText from EterPythonLib/PythonGraphicTextModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpTextInstance.h", + "layer": "platform", + "reason": "implicit CGraphicTextInstance from EterPythonLib/PythonGraphicTextModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpTexture.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageTexture.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpVertexBuffer.h", + "layer": "platform", + "reason": "include from EterLib/GrpVertexBufferDynamic.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpVertexBufferDynamic.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/IME.h", + "layer": "platform", + "reason": "include from UserInterface/PythonIME.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Input.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/LensFlare.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "EterLib/MSApplication.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/MSWindow.h", + "layer": "platform", + "reason": "include from EterLib/MSApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Mutex.h", + "layer": "platform", + "reason": "include from GameLib/AreaLoaderThread.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetAddress.h", + "layer": "logic", + "reason": "include from EterLib/NetStream.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetDevice.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetPacketHeaderMap.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStream.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetStream.h", + "layer": "logic", + "reason": "include from UserInterface/ServerStateChecker.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Pool.h", + "layer": "logic", + "reason": "include from EterLib/GrpImageInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Profiler.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Ray.h", + "layer": "logic", + "reason": "include from EterLib/GrpBase.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Ref.h", + "layer": "logic", + "reason": "include from EterLib/GrpImage.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ReferenceObject.h", + "layer": "logic", + "reason": "include from EterLib/Resource.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Resource.h", + "layer": "logic", + "reason": "include from EterLib/GrpImage.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ResourceManager.h", + "layer": "logic", + "reason": "include from GameLib/DungeonBlock.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ScreenFilter.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "EterLib/SkyBox.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "EterLib/StateManager.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/TextBar.h", + "layer": "platform", + "reason": "include from EterPythonLib/PythonGraphicModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/TextFileLoader.h", + "layer": "logic", + "reason": "include from EffectLib/SimpleLightData.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Thread.h", + "layer": "platform", + "reason": "include from EterLib/FileLoaderThread.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Util.h", + "layer": "logic", + "reason": "include from EterLib/TextFileLoader.h", + "owner_in_slice": false + }, + { + "header": "EterLib/parser.h", + "layer": "logic", + "reason": "include from UserInterface/PythonEventManager.h", + "owner_in_slice": false + }, + { + "header": "EterLocale/CodePageId.h", + "layer": "logic", + "reason": "implicit CP_ARABIC from EterPythonLib/PythonWindow.cpp", + "owner_in_slice": false + }, + { + "header": "EterPack/EterPack.h", + "layer": "logic", + "reason": "include from GameLib/PropertyManager.h", + "owner_in_slice": false + }, + { + "header": "EterPack/EterPackManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "EterPack/md5.h", + "layer": "logic", + "reason": "include from EterPack/EterPack.h", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonGraphic.h", + "layer": "python", + "reason": "implicit CPythonGraphic from EterPythonLib/PythonGraphicModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonGridSlotWindow.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonSlotWindow.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonWindow.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": true + }, + { + "header": "EterPythonLib/PythonWindowManager.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManager.cpp", + "owner_in_slice": true + }, + { + "header": "GameLib/ActorInstance.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.cpp", + "owner_in_slice": true + }, + { + "header": "GameLib/ActorInstanceInterface.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/Area.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/AreaLoaderThread.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/AreaTerrain.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.cpp", + "owner_in_slice": false + }, + { + "header": "GameLib/DungeonBlock.h", + "layer": "logic", + "reason": "include from GameLib/Area.h", + "owner_in_slice": false + }, + { + "header": "GameLib/FlyTarget.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/FlyingObjectManager.h", + "layer": "logic", + "reason": "include from GameLib/RaceMotionDataEvent.h", + "owner_in_slice": false + }, + { + "header": "GameLib/GameEventManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "GameLib/GameType.h", + "layer": "logic", + "reason": "implicit GET_MOTION_INDEX from GameLib/ActorInstance.cpp", + "owner_in_slice": false + }, + { + "header": "GameLib/GameUtil.h", + "layer": "logic", + "reason": "implicit DEGREE_DIRECTION_LEFT from UserInterface/InstanceBase.cpp", + "owner_in_slice": false + }, + { + "header": "GameLib/Interface.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/ItemData.h", + "layer": "logic", + "reason": "include from GameLib/ItemManager.h", + "owner_in_slice": false + }, + { + "header": "GameLib/ItemManager.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.cpp", + "owner_in_slice": false + }, + { + "header": "GameLib/MapBase.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonBackground.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapOutdoor.h", + "layer": "logic", + "reason": "include from GameLib/MapManager.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapType.h", + "layer": "logic", + "reason": "include from GameLib/Area.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapUtil.h", + "layer": "logic", + "reason": "include from GameLib/PhysicsObject.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MonsterAreaInfo.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/PhysicsObject.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/PropertyManager.h", + "layer": "logic", + "reason": "include from GameLib/MapManager.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceData.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.cpp", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceMotionData.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceMotionDataEvent.h", + "layer": "logic", + "reason": "include from GameLib/RaceMotionData.h", + "owner_in_slice": false + }, + { + "header": "GameLib/SnowEnvironment.h", + "layer": "platform", + "reason": "include from UserInterface/PythonBackground.h", + "owner_in_slice": false + }, + { + "header": "GameLib/TerrainDecal.h", + "layer": "platform", + "reason": "include from UserInterface/PythonBackground.h", + "owner_in_slice": false + }, + { + "header": "GameLib/TerrainPatch.h", + "layer": "platform", + "reason": "include from GameLib/AreaTerrain.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundBase.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager3D.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundData.h", + "layer": "platform", + "reason": "include from MilesLib/SoundBase.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundInstance.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager3D.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManager.h", + "layer": "platform", + "reason": "include from GameLib/MapType.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManager2D.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManager3D.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManagerStream.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/Type.h", + "layer": "platform", + "reason": "include from GameLib/RaceMotionData.h", + "owner_in_slice": false + }, + { + "header": "PRTerrainLib/Terrain.h", + "layer": "platform", + "reason": "include from GameLib/AreaTerrain.h", + "owner_in_slice": false + }, + { + "header": "PRTerrainLib/TerrainType.h", + "layer": "platform", + "reason": "include from PRTerrainLib/Terrain.h", + "owner_in_slice": false + }, + { + "header": "PRTerrainLib/TextureSet.h", + "layer": "platform", + "reason": "include from PRTerrainLib/Terrain.h", + "owner_in_slice": false + }, + { + "header": "ScriptLib/PythonLauncher.h", + "layer": "python", + "reason": "include from ScriptLib/PythonLauncher.cpp", + "owner_in_slice": true + }, + { + "header": "ScriptLib/PythonMarshal.h", + "layer": "python", + "reason": "implicit _PyMarshal_ReadLastObjectFromFile from ScriptLib/PythonLauncher.cpp", + "owner_in_slice": false + }, + { + "header": "ScriptLib/PythonUtils.h", + "layer": "python", + "reason": "implicit PyTuple_GetFloat from EterPythonLib/PythonGraphicImageModule.cpp", + "owner_in_slice": false + }, + { + "header": "ScriptLib/Resource.h", + "layer": "python", + "reason": "implicit CPythonResource from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeForest.h", + "layer": "platform", + "reason": "include from SpeedTreeLib/SpeedTreeForestDirectX8.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeForestDirectX8.h", + "layer": "platform", + "reason": "include from GameLib/ActorInstance.cpp", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeMaterial.h", + "layer": "platform", + "reason": "include from SpeedTreeLib/SpeedTreeWrapper.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeWrapper.h", + "layer": "platform", + "reason": "include from GameLib/ActorInstance.cpp", + "owner_in_slice": false + }, + { + "header": "SphereLib/frustum.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/pool.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/sphere.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/spherepack.h", + "layer": "platform", + "reason": "include from EterLib/CullingManager.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/vector.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractApplication.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractCharacterManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonCharacterManager.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractChat.h", + "layer": "logic", + "reason": "include from UserInterface/PythonChat.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractPlayer.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractSingleton.h", + "layer": "logic", + "reason": "include from UserInterface/AbstractApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AccountConnector.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": true + }, + { + "header": "UserInterface/AffectFlagContainer.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/Discord.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/GameType.h", + "layer": "logic", + "reason": "implicit TItemData from UserInterface/AbstractPlayer.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/GuildMarkDownloader.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/GuildMarkUploader.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/Hackshield.h", + "layer": "logic", + "reason": "include from UserInterface/Packet.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/HackshieldLicense.h", + "layer": "logic", + "reason": "include from UserInterface/Hackshield.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/InstanceBase.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.cpp", + "owner_in_slice": true + }, + { + "header": "UserInterface/InsultChecker.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStream.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/Locale.h", + "layer": "logic", + "reason": "implicit LocaleService_GetOpenIDAuthKey from UserInterface/AccountConnector.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/Locale_inc.h", + "layer": "logic", + "reason": "include from UserInterface/Locale.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/MarkImage.h", + "layer": "logic", + "reason": "include from UserInterface/GuildMarkUploader.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/MarkManager.h", + "layer": "logic", + "reason": "include from UserInterface/GuildMarkDownloader.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/MovieMan.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/NetworkActorManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseLoading.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/Packet.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/ProcessCRC.h", + "layer": "platform", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonApplication.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonBackground.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonCharacterManager.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.cpp", + "owner_in_slice": true + }, + { + "header": "UserInterface/PythonChat.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonEventManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonExchange.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonGuild.h", + "layer": "python", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonIME.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonItem.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonMessenger.h", + "layer": "python", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonMiniMap.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonNetworkStream.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": true + }, + { + "header": "UserInterface/PythonNonPlayer.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonPlayer.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonQuest.h", + "layer": "python", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonSafeBox.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonShop.h", + "layer": "python", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonSkill.h", + "layer": "python", + "reason": "include from UserInterface/PythonPlayer.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonSystem.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonTextTail.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/ServerStateChecker.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/Test.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamModule.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/WiseLogicXTrap.h", + "layer": "platform", + "reason": "include from UserInterface/AccountConnector.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/resource.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplicationModule.cpp", + "owner_in_slice": false + } + ], + "stdafx_supplied": [ + "EterBase/Filename.h", + "EterBase/StdAfx.h", + "EterLib/GrpExpandedImageInstance.h", + "EterLib/GrpMarkInstance.h", + "EterLib/GrpText.h", + "EterLib/GrpTextInstance.h", + "EterLocale/CodePageId.h", + "EterPythonLib/PythonGraphic.h", + "GameLib/GameType.h", + "GameLib/GameUtil.h", + "ScriptLib/PythonMarshal.h", + "ScriptLib/PythonUtils.h", + "ScriptLib/Resource.h", + "UserInterface/GameType.h", + "UserInterface/Locale.h" + ], + "system_includes": [ + "algorithm", + "assert.h", + "cryptopp/cryptlib.h", + "d3d8.h", + "d3d8types.h", + "d3dx8.h", + "deque", + "discord_rpc.h", + "float.h", + "functional", + "granny.h", + "il/il.h", + "imagehlp.h", + "imm.h", + "list", + "lzo/lzo1x.h", + "map", + "math.h", + "mmsystem.h", + "mss.h", + "python-2.7/frameobject.h", + "queue", + "rpc.h", + "rpcndr.h", + "set", + "shlobj.h", + "speedtreert.h", + "sstream", + "stack", + "stdio.h", + "string", + "time.h", + "unknwn.h", + "unordered_map", + "vector", + "windows.h" + ], + "python_scripts": [ + "colorinfo.py", + "consolemodule.py", + "constinfo.py", + "debuginfo.py", + "emotion.py", + "game.py", + "interfacemodule.py", + "introcreate.py", + "introempire.py", + "introloading.py", + "intrologin.py", + "intrologo.py", + "introselect.py", + "localeinfo.py", + "mousemodule.py", + "musicinfo.py", + "networkmodule.py", + "playersettingmodule.py", + "prototype.py", + "servercommandparser.py", + "serverinfo.py", + "stringcommander.py", + "system.py", + "ui.py", + "uiaffectshower.py", + "uiattachmetin.py", + "uicandidate.py", + "uicharacter.py", + "uichat.py", + "uicommon.py", + "uicube.py", + "uidragonsoul.py", + "uiequipmentdialog.py", + "uiexchange.py", + "uigamebutton.py", + "uigameoption.py", + "uiguild.py", + "uihelp.py", + "uiinventory.py", + "uimapnameshower.py", + "uimessenger.py", + "uiminimap.py", + "uioption.py", + "uiparty.py", + "uiphasecurtain.py", + "uipickmoney.py", + "uiplayergauge.py", + "uipointreset.py", + "uiprivateshopbuilder.py", + "uiquest.py", + "uirefine.py", + "uirestart.py", + "uisafebox.py", + "uiscriptlocale.py", + "uiselectitem.py", + "uiselectmusic.py", + "uishop.py", + "uisystem.py", + "uisystemoption.py", + "uitarget.py", + "uitaskbar.py", + "uitip.py", + "uitooltip.py", + "uiuploadmark.py", + "uiwhisper.py" + ], + "native_modules": [ + { + "module": "ServerStateChecker", + "provider": "UserInterface/ServerStateCheckerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "__builtin__", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "_weakref", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "app", + "provider": "UserInterface/PythonApplicationModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "background", + "provider": "UserInterface/PythonBackgroundModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "chat", + "provider": "UserInterface/PythonChatModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "chr", + "provider": "UserInterface/PythonCharacterModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "chrmgr", + "provider": "UserInterface/PythonCharacterManagerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "dbg", + "provider": "ScriptLib/PythonDebugModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "effect", + "provider": "UserInterface/PythonEffectModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "event", + "provider": "UserInterface/PythonEventManagerMoudle.cpp", + "real": false, + "layer": "python" + }, + { + "module": "exchange", + "provider": "UserInterface/PythonExchangeModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "fly", + "provider": "UserInterface/PythonFlyModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "grp", + "provider": "EterPythonLib/PythonGraphicModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "grpImage", + "provider": "EterPythonLib/PythonGraphicImageModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "grpText", + "provider": "EterPythonLib/PythonGraphicTextModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "guild", + "provider": "UserInterface/PythonGuild.cpp", + "real": false, + "layer": "python" + }, + { + "module": "ime", + "provider": "UserInterface/PythonIMEModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "imp", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "item", + "provider": "UserInterface/PythonItemModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "marshal", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "math", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "messenger", + "provider": "UserInterface/PythonMessenger.cpp", + "real": false, + "layer": "python" + }, + { + "module": "miniMap", + "provider": "UserInterface/PythonMiniMapModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "net", + "provider": "UserInterface/PythonNetworkStreamModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "nonplayer", + "provider": "UserInterface/PythonNonPlayerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "os", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "pack", + "provider": "UserInterface/PythonPackModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "player", + "provider": "UserInterface/PythonPlayerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "quest", + "provider": "UserInterface/PythonQuest.cpp", + "real": false, + "layer": "python" + }, + { + "module": "safebox", + "provider": "UserInterface/PythonSafeBox.cpp", + "real": false, + "layer": "python" + }, + { + "module": "shop", + "provider": "UserInterface/PythonShop.cpp", + "real": false, + "layer": "python" + }, + { + "module": "skill", + "provider": "UserInterface/PythonSkill.cpp", + "real": false, + "layer": "python" + }, + { + "module": "snd", + "provider": "UserInterface/PythonSoundManagerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "stat", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "sys", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "systemSetting", + "provider": "UserInterface/PythonSystemModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "textTail", + "provider": "UserInterface/PythonTextTailModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "time", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "wndMgr", + "provider": "EterPythonLib/PythonWindowManagerModule.cpp", + "real": true, + "layer": "python" + } + ], + "ambiguous_symbols": {} +} diff --git a/audit/slices/2V3.json b/audit/slices/2V3.json new file mode 100644 index 00000000..1e6e4a75 --- /dev/null +++ b/audit/slices/2V3.json @@ -0,0 +1,1853 @@ +{ + "slice": "2V3", + "generated_by": ".agents/skills/metin2-40250-parity-audit/scripts/port_deps.py slices --write", + "units": [ + { + "unit": "ScriptLib/PythonLauncher.cpp", + "layer": "python", + "new": false + }, + { + "unit": "UserInterface/PythonPackModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonWindow.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonWindowManager.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonWindowManagerModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonGraphicImageModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonGraphicModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonGraphicTextModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "EterPythonLib/PythonGraphicThingModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "UserInterface/PythonApplicationModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStream.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStreamPhaseHandShake.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStreamPhaseLogin.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStreamPhaseSelect.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStreamPhaseLoading.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStreamModule.cpp", + "layer": "python", + "new": false + }, + { + "unit": "UserInterface/AccountConnector.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/PythonNetworkStreamPhaseGame.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/PythonCharacterManager.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/InstanceBase.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "GameLib/ActorInstance.cpp", + "layer": "logic", + "new": false + }, + { + "unit": "UserInterface/PythonPlayer.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "UserInterface/PythonPlayerInput.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "UserInterface/PythonPlayerInputKeyboard.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "UserInterface/PythonPlayerInputMouse.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "UserInterface/PythonPlayerEventHandler.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "UserInterface/InstanceBaseMovement.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "GameLib/ActorInstanceMotion.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "GameLib/ActorInstanceEvent.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "GameLib/ActorInstancePosition.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "GameLib/ActorInstanceRotation.cpp", + "layer": "logic", + "new": true + }, + { + "unit": "GameLib/ActorInstanceCollisionDetection.cpp", + "layer": "logic", + "new": true + } + ], + "headers": [ + { + "header": "EffectLib/EffectData.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectElementBase.h", + "layer": "platform", + "reason": "include from EffectLib/SimpleLightData.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectElementBaseInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectManager.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectManager.h", + "layer": "platform", + "reason": "include from GameLib/RaceMotionDataEvent.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectMesh.h", + "layer": "platform", + "reason": "include from EffectLib/EffectMeshInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectMeshInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EffectUpdateDecorator.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/EmitterProperty.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/FrameController.h", + "layer": "platform", + "reason": "include from EffectLib/EffectMeshInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleInstance.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleProperty.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleSystemData.h", + "layer": "platform", + "reason": "include from EffectLib/EffectData.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/ParticleSystemInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/SimpleLightData.h", + "layer": "platform", + "reason": "include from EffectLib/SimpleLightInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/SimpleLightInstance.h", + "layer": "platform", + "reason": "include from EffectLib/EffectInstance.h", + "owner_in_slice": false + }, + { + "header": "EffectLib/Type.h", + "layer": "platform", + "reason": "include from EffectLib/SimpleLightData.h", + "owner_in_slice": false + }, + { + "header": "EterBase/CRC32.h", + "layer": "platform", + "reason": "include from EterPythonLib/PythonWindow.cpp", + "owner_in_slice": false + }, + { + "header": "EterBase/Debug.h", + "layer": "platform", + "reason": "include from EterLib/Pool.h", + "owner_in_slice": false + }, + { + "header": "EterBase/FileBase.h", + "layer": "platform", + "reason": "include from EterBase/MappedFile.h", + "owner_in_slice": false + }, + { + "header": "EterBase/FileLoader.h", + "layer": "platform", + "reason": "include from EterLib/TextFileLoader.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Filename.h", + "layer": "platform", + "reason": "implicit CFileNameHelper from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "EterBase/MappedFile.h", + "layer": "platform", + "reason": "include from EterLib/TextFileLoader.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Poly/Poly.h", + "layer": "platform", + "reason": "include from UserInterface/PythonSkill.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Poly/SymTable.h", + "layer": "platform", + "reason": "include from EterBase/Poly/Poly.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Random.h", + "layer": "platform", + "reason": "include from EffectLib/EffectUpdateDecorator.h", + "owner_in_slice": false + }, + { + "header": "EterBase/ServiceDefs.h", + "layer": "platform", + "reason": "include from EterBase/StdAfx.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Singleton.h", + "layer": "platform", + "reason": "include from EterLib/CullingManager.h", + "owner_in_slice": false + }, + { + "header": "EterBase/StdAfx.h", + "layer": "platform", + "reason": "implicit stricmp from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterBase/Stl.h", + "layer": "platform", + "reason": "include from EterGrnLib/ThingInstance.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Timer.h", + "layer": "platform", + "reason": "include from EterLib/Profiler.h", + "owner_in_slice": false + }, + { + "header": "EterBase/Utils.h", + "layer": "platform", + "reason": "include from EterPythonLib/PythonWindow.h", + "owner_in_slice": false + }, + { + "header": "EterBase/cipher.h", + "layer": "platform", + "reason": "include from EterLib/NetStream.h", + "owner_in_slice": false + }, + { + "header": "EterBase/lzo.h", + "layer": "platform", + "reason": "include from EterBase/MappedFile.h", + "owner_in_slice": false + }, + { + "header": "EterBase/tea.h", + "layer": "platform", + "reason": "include from EterLib/NetStream.h", + "owner_in_slice": false + }, + { + "header": "EterBase/vk.h", + "layer": "platform", + "reason": "include from EterBase/StdAfx.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/LODController.h", + "layer": "platform", + "reason": "include from EterGrnLib/ThingInstance.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Material.h", + "layer": "platform", + "reason": "include from EterGrnLib/Mesh.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Mesh.h", + "layer": "platform", + "reason": "include from EterGrnLib/Model.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Model.h", + "layer": "platform", + "reason": "include from EterGrnLib/ModelInstance.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/ModelInstance.h", + "layer": "platform", + "reason": "include from EterGrnLib/LODController.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Motion.h", + "layer": "platform", + "reason": "include from EterGrnLib/ModelInstance.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Thing.h", + "layer": "platform", + "reason": "include from EterGrnLib/LODController.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/ThingInstance.h", + "layer": "platform", + "reason": "include from GameLib/ActorInstanceInterface.h", + "owner_in_slice": false + }, + { + "header": "EterGrnLib/Util.h", + "layer": "platform", + "reason": "include from EterGrnLib/Material.h", + "owner_in_slice": false + }, + { + "header": "EterImageLib/DXTCImage.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageTexture.h", + "owner_in_slice": false + }, + { + "header": "EterImageLib/Image.h", + "layer": "platform", + "reason": "include from EterImageLib/TGAImage.h", + "owner_in_slice": false + }, + { + "header": "EterImageLib/TGAImage.h", + "layer": "platform", + "reason": "include from PRTerrainLib/Terrain.h", + "owner_in_slice": false + }, + { + "header": "EterLib/AttributeData.h", + "layer": "logic", + "reason": "include from EterLib/AttributeInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/AttributeInstance.h", + "layer": "logic", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Camera.h", + "layer": "logic", + "reason": "include from UserInterface/PythonPlayerInputMouse.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/CollisionData.h", + "layer": "logic", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ColorTransitionHelper.h", + "layer": "logic", + "reason": "include from EterLib/SkyBox.h", + "owner_in_slice": false + }, + { + "header": "EterLib/CullingManager.h", + "layer": "platform", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Decal.h", + "layer": "platform", + "reason": "include from GameLib/TerrainDecal.h", + "owner_in_slice": false + }, + { + "header": "EterLib/DibBar.h", + "layer": "platform", + "reason": "include from EterLib/TextBar.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Dimm.h", + "layer": "logic", + "reason": "include from EterLib/IME.h", + "owner_in_slice": false + }, + { + "header": "EterLib/FileLoaderThread.h", + "layer": "platform", + "reason": "include from EterLib/ResourceManager.h", + "owner_in_slice": false + }, + { + "header": "EterLib/FuncObject.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStream.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpBase.h", + "layer": "platform", + "reason": "include from EterLib/GrpIndexBuffer.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpCollisionObject.h", + "layer": "platform", + "reason": "include from EterGrnLib/ModelInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpColor.h", + "layer": "platform", + "reason": "include from EterLib/GrpColorInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpColorInstance.h", + "layer": "platform", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpDIB.h", + "layer": "platform", + "reason": "include from EterLib/DibBar.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpDetector.h", + "layer": "platform", + "reason": "include from EterLib/GrpBase.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpDevice.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpExpandedImageInstance.h", + "layer": "platform", + "reason": "implicit CGraphicExpandedImageInstance from EterPythonLib/PythonGraphicImageModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpFontTexture.h", + "layer": "platform", + "reason": "include from EterLib/GrpText.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpImage.h", + "layer": "platform", + "reason": "include from EterGrnLib/ModelInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpImageInstance.h", + "layer": "platform", + "reason": "include from EterGrnLib/Material.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpImageTexture.h", + "layer": "platform", + "reason": "include from EterLib/GrpImage.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpIndexBuffer.h", + "layer": "platform", + "reason": "include from EterGrnLib/Model.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpLightManager.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpMarkInstance.h", + "layer": "platform", + "reason": "implicit CGraphicMarkInstance from EterPythonLib/PythonWindow.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpMath.h", + "layer": "platform", + "reason": "include from GameLib/ActorInstanceCollisionDetection.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpObjectInstance.h", + "layer": "platform", + "reason": "include from EterGrnLib/ThingInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpScreen.h", + "layer": "platform", + "reason": "include from EterLib/GrpObjectInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpShadowTexture.h", + "layer": "platform", + "reason": "include from EterGrnLib/ThingInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpSubImage.h", + "layer": "platform", + "reason": "include from GameLib/ItemData.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpText.h", + "layer": "platform", + "reason": "implicit CGraphicText from EterPythonLib/PythonGraphicTextModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpTextInstance.h", + "layer": "platform", + "reason": "implicit CGraphicTextInstance from EterPythonLib/PythonGraphicTextModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpTexture.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageTexture.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpVertexBuffer.h", + "layer": "platform", + "reason": "include from EterGrnLib/Model.h", + "owner_in_slice": false + }, + { + "header": "EterLib/GrpVertexBufferDynamic.h", + "layer": "platform", + "reason": "include from EterLib/GrpImageInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/IME.h", + "layer": "platform", + "reason": "include from UserInterface/PythonIME.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Input.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/LensFlare.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "EterLib/MSApplication.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/MSWindow.h", + "layer": "platform", + "reason": "include from EterLib/MSApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Mutex.h", + "layer": "platform", + "reason": "include from GameLib/AreaLoaderThread.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetAddress.h", + "layer": "logic", + "reason": "include from EterLib/NetStream.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetDevice.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetPacketHeaderMap.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStream.h", + "owner_in_slice": false + }, + { + "header": "EterLib/NetStream.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStream.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Pool.h", + "layer": "logic", + "reason": "include from EterLib/GrpImageInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Profiler.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Ray.h", + "layer": "logic", + "reason": "include from EterLib/GrpBase.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Ref.h", + "layer": "logic", + "reason": "include from EterGrnLib/Material.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ReferenceObject.h", + "layer": "logic", + "reason": "include from EterGrnLib/Material.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Resource.h", + "layer": "logic", + "reason": "include from EterLib/GrpImage.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ResourceManager.h", + "layer": "logic", + "reason": "include from GameLib/DungeonBlock.h", + "owner_in_slice": false + }, + { + "header": "EterLib/ScreenFilter.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "EterLib/SkyBox.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "EterLib/StateManager.h", + "layer": "platform", + "reason": "include from EffectLib/ParticleSystemInstance.h", + "owner_in_slice": false + }, + { + "header": "EterLib/TextBar.h", + "layer": "platform", + "reason": "include from EterPythonLib/PythonGraphicModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterLib/TextFileLoader.h", + "layer": "logic", + "reason": "include from EffectLib/SimpleLightData.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Thread.h", + "layer": "platform", + "reason": "include from EterLib/FileLoaderThread.h", + "owner_in_slice": false + }, + { + "header": "EterLib/Util.h", + "layer": "logic", + "reason": "include from EterLib/TextFileLoader.h", + "owner_in_slice": false + }, + { + "header": "EterLib/parser.h", + "layer": "logic", + "reason": "include from UserInterface/PythonEventManager.h", + "owner_in_slice": false + }, + { + "header": "EterLocale/CodePageId.h", + "layer": "logic", + "reason": "implicit CP_ARABIC from EterPythonLib/PythonWindow.cpp", + "owner_in_slice": false + }, + { + "header": "EterPack/EterPack.h", + "layer": "logic", + "reason": "include from GameLib/PropertyManager.h", + "owner_in_slice": false + }, + { + "header": "EterPack/EterPackManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "EterPack/md5.h", + "layer": "logic", + "reason": "include from EterPack/EterPack.h", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonGraphic.h", + "layer": "python", + "reason": "implicit CPythonGraphic from EterPythonLib/PythonGraphicModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonGridSlotWindow.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonSlotWindow.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": false + }, + { + "header": "EterPythonLib/PythonWindow.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManagerModule.cpp", + "owner_in_slice": true + }, + { + "header": "EterPythonLib/PythonWindowManager.h", + "layer": "python", + "reason": "include from EterPythonLib/PythonWindowManager.cpp", + "owner_in_slice": true + }, + { + "header": "GameLib/ActorInstance.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstanceCollisionDetection.cpp", + "owner_in_slice": true + }, + { + "header": "GameLib/ActorInstanceInterface.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/Area.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/AreaLoaderThread.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/AreaTerrain.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/DungeonBlock.h", + "layer": "logic", + "reason": "include from GameLib/Area.h", + "owner_in_slice": false + }, + { + "header": "GameLib/FlyHandler.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstanceMotion.cpp", + "owner_in_slice": false + }, + { + "header": "GameLib/FlyTarget.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/FlyingObjectManager.h", + "layer": "logic", + "reason": "include from GameLib/RaceMotionDataEvent.h", + "owner_in_slice": false + }, + { + "header": "GameLib/GameEventManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "GameLib/GameType.h", + "layer": "logic", + "reason": "implicit GET_MOTION_INDEX from GameLib/ActorInstance.cpp", + "owner_in_slice": false + }, + { + "header": "GameLib/GameUtil.h", + "layer": "logic", + "reason": "implicit DetectCollisionDynamicSphereVSDynamicSphere from GameLib/ActorInstanceCollisionDetection.cpp", + "owner_in_slice": false + }, + { + "header": "GameLib/Interface.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/ItemData.h", + "layer": "logic", + "reason": "include from UserInterface/PythonSkill.h", + "owner_in_slice": false + }, + { + "header": "GameLib/ItemManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapBase.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonBackground.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapOutdoor.h", + "layer": "logic", + "reason": "include from GameLib/MapManager.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapType.h", + "layer": "logic", + "reason": "include from GameLib/Area.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MapUtil.h", + "layer": "logic", + "reason": "include from GameLib/PhysicsObject.h", + "owner_in_slice": false + }, + { + "header": "GameLib/MonsterAreaInfo.h", + "layer": "logic", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "GameLib/PhysicsObject.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/PropertyManager.h", + "layer": "logic", + "reason": "include from GameLib/MapManager.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceData.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceMotionData.h", + "layer": "logic", + "reason": "include from GameLib/ActorInstance.h", + "owner_in_slice": false + }, + { + "header": "GameLib/RaceMotionDataEvent.h", + "layer": "logic", + "reason": "include from GameLib/RaceMotionData.h", + "owner_in_slice": false + }, + { + "header": "GameLib/SnowEnvironment.h", + "layer": "platform", + "reason": "include from UserInterface/PythonBackground.h", + "owner_in_slice": false + }, + { + "header": "GameLib/TerrainDecal.h", + "layer": "platform", + "reason": "include from UserInterface/PythonBackground.h", + "owner_in_slice": false + }, + { + "header": "GameLib/TerrainPatch.h", + "layer": "platform", + "reason": "include from GameLib/AreaTerrain.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundBase.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager3D.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundData.h", + "layer": "platform", + "reason": "include from MilesLib/SoundBase.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundInstance.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager3D.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManager.h", + "layer": "platform", + "reason": "include from GameLib/MapType.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManager2D.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManager3D.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/SoundManagerStream.h", + "layer": "platform", + "reason": "include from MilesLib/SoundManager.h", + "owner_in_slice": false + }, + { + "header": "MilesLib/Type.h", + "layer": "platform", + "reason": "include from GameLib/RaceMotionData.h", + "owner_in_slice": false + }, + { + "header": "PRTerrainLib/Terrain.h", + "layer": "platform", + "reason": "include from GameLib/AreaTerrain.h", + "owner_in_slice": false + }, + { + "header": "PRTerrainLib/TerrainType.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "PRTerrainLib/TextureSet.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "ScriptLib/PythonLauncher.h", + "layer": "python", + "reason": "include from ScriptLib/PythonLauncher.cpp", + "owner_in_slice": true + }, + { + "header": "ScriptLib/PythonMarshal.h", + "layer": "python", + "reason": "implicit _PyMarshal_ReadLastObjectFromFile from ScriptLib/PythonLauncher.cpp", + "owner_in_slice": false + }, + { + "header": "ScriptLib/PythonUtils.h", + "layer": "python", + "reason": "implicit PyTuple_GetFloat from EterPythonLib/PythonGraphicImageModule.cpp", + "owner_in_slice": false + }, + { + "header": "ScriptLib/Resource.h", + "layer": "python", + "reason": "implicit CPythonResource from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeForest.h", + "layer": "platform", + "reason": "include from SpeedTreeLib/SpeedTreeForestDirectX8.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeForestDirectX8.h", + "layer": "platform", + "reason": "include from GameLib/MapOutdoor.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeMaterial.h", + "layer": "platform", + "reason": "include from SpeedTreeLib/SpeedTreeWrapper.h", + "owner_in_slice": false + }, + { + "header": "SpeedTreeLib/SpeedTreeWrapper.h", + "layer": "platform", + "reason": "include from GameLib/Area.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/frustum.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/pool.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/sphere.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/spherepack.h", + "layer": "platform", + "reason": "include from EterLib/CullingManager.h", + "owner_in_slice": false + }, + { + "header": "SphereLib/vector.h", + "layer": "platform", + "reason": "include from SphereLib/spherepack.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractApplication.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractCharacterManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonCharacterManager.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractChat.h", + "layer": "logic", + "reason": "include from UserInterface/PythonChat.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractPlayer.h", + "layer": "logic", + "reason": "include from UserInterface/PythonPlayer.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AbstractSingleton.h", + "layer": "logic", + "reason": "include from UserInterface/AbstractCharacterManager.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/AccountConnector.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": true + }, + { + "header": "UserInterface/AffectFlagContainer.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBase.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/Discord.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/GameType.h", + "layer": "logic", + "reason": "implicit TItemData from UserInterface/AbstractPlayer.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/GuildMarkDownloader.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/GuildMarkUploader.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/Hackshield.h", + "layer": "logic", + "reason": "include from UserInterface/Packet.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/HackshieldLicense.h", + "layer": "logic", + "reason": "include from UserInterface/Hackshield.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/InstanceBase.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBaseMovement.cpp", + "owner_in_slice": true + }, + { + "header": "UserInterface/InsultChecker.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStream.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/Locale.h", + "layer": "logic", + "reason": "implicit LocaleService_GetOpenIDAuthKey from UserInterface/AccountConnector.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/Locale_inc.h", + "layer": "logic", + "reason": "include from UserInterface/Locale.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/MarkImage.h", + "layer": "logic", + "reason": "include from UserInterface/GuildMarkUploader.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/MarkManager.h", + "layer": "logic", + "reason": "include from UserInterface/GuildMarkDownloader.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/MovieMan.h", + "layer": "platform", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/NetworkActorManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamPhaseLoading.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/Packet.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStream.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/ProcessCRC.h", + "layer": "platform", + "reason": "include from UserInterface/PythonNetworkStreamPhaseGame.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonApplication.h", + "layer": "logic", + "reason": "include from UserInterface/PythonPlayerInputMouse.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonBackground.h", + "layer": "logic", + "reason": "include from UserInterface/InstanceBaseMovement.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonCharacterManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonPlayerEventHandler.cpp", + "owner_in_slice": true + }, + { + "header": "UserInterface/PythonChat.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonEventManager.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonExchange.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonGuild.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonIME.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonItem.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonMessenger.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonMiniMap.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonNetworkStream.h", + "layer": "logic", + "reason": "include from UserInterface/PythonPlayerEventHandler.cpp", + "owner_in_slice": true + }, + { + "header": "UserInterface/PythonNonPlayer.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonPlayer.h", + "layer": "logic", + "reason": "include from UserInterface/PythonPlayerEventHandler.cpp", + "owner_in_slice": true + }, + { + "header": "UserInterface/PythonPlayerEventHandler.h", + "layer": "logic", + "reason": "include from UserInterface/PythonPlayerEventHandler.cpp", + "owner_in_slice": true + }, + { + "header": "UserInterface/PythonQuest.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonSafeBox.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonShop.h", + "layer": "python", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonSkill.h", + "layer": "python", + "reason": "include from UserInterface/PythonPlayer.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonSystem.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/PythonTextTail.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/ServerStateChecker.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplication.h", + "owner_in_slice": false + }, + { + "header": "UserInterface/Test.h", + "layer": "logic", + "reason": "include from UserInterface/PythonNetworkStreamModule.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/WiseLogicXTrap.h", + "layer": "platform", + "reason": "include from UserInterface/AccountConnector.cpp", + "owner_in_slice": false + }, + { + "header": "UserInterface/resource.h", + "layer": "logic", + "reason": "include from UserInterface/PythonApplicationModule.cpp", + "owner_in_slice": false + } + ], + "stdafx_supplied": [ + "EterBase/Filename.h", + "EterBase/StdAfx.h", + "EterLib/GrpExpandedImageInstance.h", + "EterLib/GrpMarkInstance.h", + "EterLib/GrpText.h", + "EterLib/GrpTextInstance.h", + "EterLocale/CodePageId.h", + "EterPythonLib/PythonGraphic.h", + "GameLib/GameType.h", + "GameLib/GameUtil.h", + "ScriptLib/PythonMarshal.h", + "ScriptLib/PythonUtils.h", + "ScriptLib/Resource.h", + "UserInterface/GameType.h", + "UserInterface/Locale.h" + ], + "system_includes": [ + "algorithm", + "assert.h", + "cryptopp/cryptlib.h", + "d3d8.h", + "d3d8types.h", + "d3dx8.h", + "deque", + "discord_rpc.h", + "float.h", + "functional", + "granny.h", + "il/il.h", + "imagehlp.h", + "imm.h", + "list", + "lzo/lzo1x.h", + "map", + "math.h", + "mmsystem.h", + "mss.h", + "python-2.7/frameobject.h", + "queue", + "rpc.h", + "rpcndr.h", + "set", + "shlobj.h", + "speedtreert.h", + "sstream", + "stack", + "stdio.h", + "string", + "time.h", + "unknwn.h", + "unordered_map", + "vector", + "windows.h" + ], + "python_scripts": [ + "colorinfo.py", + "consolemodule.py", + "constinfo.py", + "debuginfo.py", + "emotion.py", + "game.py", + "interfacemodule.py", + "introcreate.py", + "introempire.py", + "introloading.py", + "intrologin.py", + "intrologo.py", + "introselect.py", + "localeinfo.py", + "mousemodule.py", + "musicinfo.py", + "networkmodule.py", + "playersettingmodule.py", + "prototype.py", + "servercommandparser.py", + "serverinfo.py", + "stringcommander.py", + "system.py", + "ui.py", + "uiaffectshower.py", + "uiattachmetin.py", + "uicandidate.py", + "uicharacter.py", + "uichat.py", + "uicommon.py", + "uicube.py", + "uidragonsoul.py", + "uiequipmentdialog.py", + "uiexchange.py", + "uigamebutton.py", + "uigameoption.py", + "uiguild.py", + "uihelp.py", + "uiinventory.py", + "uimapnameshower.py", + "uimessenger.py", + "uiminimap.py", + "uioption.py", + "uiparty.py", + "uiphasecurtain.py", + "uipickmoney.py", + "uiplayergauge.py", + "uipointreset.py", + "uiprivateshopbuilder.py", + "uiquest.py", + "uirefine.py", + "uirestart.py", + "uisafebox.py", + "uiscriptlocale.py", + "uiselectitem.py", + "uiselectmusic.py", + "uishop.py", + "uisystem.py", + "uisystemoption.py", + "uitarget.py", + "uitaskbar.py", + "uitip.py", + "uitooltip.py", + "uiuploadmark.py", + "uiwhisper.py" + ], + "native_modules": [ + { + "module": "ServerStateChecker", + "provider": "UserInterface/ServerStateCheckerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "__builtin__", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "_weakref", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "app", + "provider": "UserInterface/PythonApplicationModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "background", + "provider": "UserInterface/PythonBackgroundModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "chat", + "provider": "UserInterface/PythonChatModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "chr", + "provider": "UserInterface/PythonCharacterModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "chrmgr", + "provider": "UserInterface/PythonCharacterManagerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "dbg", + "provider": "ScriptLib/PythonDebugModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "effect", + "provider": "UserInterface/PythonEffectModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "event", + "provider": "UserInterface/PythonEventManagerMoudle.cpp", + "real": false, + "layer": "python" + }, + { + "module": "exchange", + "provider": "UserInterface/PythonExchangeModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "fly", + "provider": "UserInterface/PythonFlyModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "grp", + "provider": "EterPythonLib/PythonGraphicModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "grpImage", + "provider": "EterPythonLib/PythonGraphicImageModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "grpText", + "provider": "EterPythonLib/PythonGraphicTextModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "guild", + "provider": "UserInterface/PythonGuild.cpp", + "real": false, + "layer": "python" + }, + { + "module": "ime", + "provider": "UserInterface/PythonIMEModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "imp", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "item", + "provider": "UserInterface/PythonItemModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "marshal", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "math", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "messenger", + "provider": "UserInterface/PythonMessenger.cpp", + "real": false, + "layer": "python" + }, + { + "module": "miniMap", + "provider": "UserInterface/PythonMiniMapModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "net", + "provider": "UserInterface/PythonNetworkStreamModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "nonplayer", + "provider": "UserInterface/PythonNonPlayerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "os", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "pack", + "provider": "UserInterface/PythonPackModule.cpp", + "real": true, + "layer": "python" + }, + { + "module": "player", + "provider": "UserInterface/PythonPlayerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "quest", + "provider": "UserInterface/PythonQuest.cpp", + "real": false, + "layer": "python" + }, + { + "module": "safebox", + "provider": "UserInterface/PythonSafeBox.cpp", + "real": false, + "layer": "python" + }, + { + "module": "shop", + "provider": "UserInterface/PythonShop.cpp", + "real": false, + "layer": "python" + }, + { + "module": "skill", + "provider": "UserInterface/PythonSkill.cpp", + "real": false, + "layer": "python" + }, + { + "module": "snd", + "provider": "UserInterface/PythonSoundManagerModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "stat", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "sys", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "systemSetting", + "provider": "UserInterface/PythonSystemModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "textTail", + "provider": "UserInterface/PythonTextTailModule.cpp", + "real": false, + "layer": "python" + }, + { + "module": "time", + "provider": "stdlib", + "real": false, + "layer": "stdlib" + }, + { + "module": "wndMgr", + "provider": "EterPythonLib/PythonWindowManagerModule.cpp", + "real": true, + "layer": "python" + } + ], + "ambiguous_symbols": {} +} diff --git a/audit/slices/batch2-order.json b/audit/slices/batch2-order.json new file mode 100644 index 00000000..4cd73a95 --- /dev/null +++ b/audit/slices/batch2-order.json @@ -0,0 +1,205 @@ +{ + "generated_by": ".agents/skills/metin2-40250-parity-audit/scripts/port_deps.py order --write", + "note": "P0 logic units; a unit starts only after every unit in `after` has landed. `serial_group` units include each other's headers and are ported as one serial group.", + "steps": [ + { + "units": [ + "GameLib/ActorInstance.cpp" + ], + "serial_group": false, + "after": [] + }, + { + "units": [ + "GameLib/ActorInstanceCollisionDetection.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp" + ] + }, + { + "units": [ + "GameLib/ActorInstanceEvent.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp" + ] + }, + { + "units": [ + "GameLib/ActorInstanceMotion.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp" + ] + }, + { + "units": [ + "GameLib/ActorInstanceMotionEvent.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp" + ] + }, + { + "units": [ + "GameLib/ActorInstancePosition.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp" + ] + }, + { + "units": [ + "GameLib/ActorInstanceRotation.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp" + ] + }, + { + "units": [ + "GameLib/ActorInstanceSync.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp" + ] + }, + { + "units": [ + "UserInterface/InstanceBase.cpp", + "UserInterface/PythonCharacterManager.cpp", + "UserInterface/PythonPlayer.cpp", + "UserInterface/PythonPlayerEventHandler.cpp" + ], + "serial_group": true, + "after": [ + "GameLib/ActorInstance.cpp" + ] + }, + { + "units": [ + "UserInterface/InstanceBaseBattle.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp", + "UserInterface/InstanceBase.cpp", + "UserInterface/PythonCharacterManager.cpp", + "UserInterface/PythonPlayer.cpp", + "UserInterface/PythonPlayerEventHandler.cpp" + ] + }, + { + "units": [ + "UserInterface/InstanceBaseEffect.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp", + "UserInterface/InstanceBase.cpp", + "UserInterface/PythonCharacterManager.cpp", + "UserInterface/PythonPlayer.cpp", + "UserInterface/PythonPlayerEventHandler.cpp" + ] + }, + { + "units": [ + "UserInterface/InstanceBaseEvent.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp", + "UserInterface/InstanceBase.cpp", + "UserInterface/PythonCharacterManager.cpp", + "UserInterface/PythonPlayer.cpp", + "UserInterface/PythonPlayerEventHandler.cpp" + ] + }, + { + "units": [ + "UserInterface/InstanceBaseMotion.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp", + "UserInterface/InstanceBase.cpp", + "UserInterface/PythonCharacterManager.cpp", + "UserInterface/PythonPlayer.cpp", + "UserInterface/PythonPlayerEventHandler.cpp" + ] + }, + { + "units": [ + "UserInterface/InstanceBaseMovement.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp", + "UserInterface/InstanceBase.cpp", + "UserInterface/PythonCharacterManager.cpp", + "UserInterface/PythonPlayer.cpp", + "UserInterface/PythonPlayerEventHandler.cpp" + ] + }, + { + "units": [ + "UserInterface/InstanceBaseTransform.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp", + "UserInterface/InstanceBase.cpp", + "UserInterface/PythonCharacterManager.cpp", + "UserInterface/PythonPlayer.cpp", + "UserInterface/PythonPlayerEventHandler.cpp" + ] + }, + { + "units": [ + "UserInterface/PythonPlayerInput.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp", + "UserInterface/InstanceBase.cpp", + "UserInterface/PythonCharacterManager.cpp", + "UserInterface/PythonPlayer.cpp", + "UserInterface/PythonPlayerEventHandler.cpp" + ] + }, + { + "units": [ + "UserInterface/PythonPlayerInputKeyboard.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp", + "UserInterface/InstanceBase.cpp", + "UserInterface/PythonCharacterManager.cpp", + "UserInterface/PythonPlayer.cpp", + "UserInterface/PythonPlayerEventHandler.cpp" + ] + }, + { + "units": [ + "UserInterface/PythonPlayerInputMouse.cpp" + ], + "serial_group": false, + "after": [ + "GameLib/ActorInstance.cpp", + "UserInterface/InstanceBase.cpp", + "UserInterface/PythonCharacterManager.cpp", + "UserInterface/PythonPlayer.cpp", + "UserInterface/PythonPlayerEventHandler.cpp" + ] + } + ] +} diff --git a/docs/PORT-PLAN.md b/docs/PORT-PLAN.md index f64a8ad5..d3af876e 100644 --- a/docs/PORT-PLAN.md +++ b/docs/PORT-PLAN.md @@ -101,7 +101,9 @@ extension/third_party/cpython-2.7.18/ # 静态库(2P 批次 1. `extension/src/port/common/`:`Win32Types.h`(`BYTE`/`WORD`/`DWORD`/`LONG`/`BOOL`/`UINT` 等标量的定宽映射; `HANDLE`/窗口句柄/消息参数另用指针宽度的平台类型)、 40250 用到的 Win32/CRT 宏和函数(`ZeroMemory`、`_snprintf`、`stricmp`、`timeGetTime` 等)的最小实现、 - `StdAfx.h` 等价物。 + `StdAfx.h` 等价物。GameLib 的逻辑头直接使用 D3DX 数学类型(`TPixelPosition` 就是 `D3DXVECTOR3`),所以还要一个 + 与平台无关的 D3DX 数学层(`D3DXVECTOR2/3/4`、`D3DXMATRIX`、`D3DXQUATERNION`、`D3DXCOLOR` 及逻辑层用到的 `D3DX*` 函数), + 按 D3DX8 的 float 语义实现。 2. 参考公共头的最小闭包:从第一批要移植的单元出发(`PythonPlayerEventHandler.h` 依赖 `ActorInstance.h`、`FlyHandler.h`、 `PythonNetworkStream.h`、`InstanceBase.h`),用脚本列出 `#include` 闭包,把闭包里的头文件先照抄为可编译的声明。 3. `port_logic` 静态库 CMake 目标,链接进 `libmtgodot`;macOS、Android、iOS、Linux、Windows 五个平台分别编译。 @@ -112,6 +114,10 @@ extension/third_party/cpython-2.7.18/ # 静态库(2P 批次 6. port-map 重新基线(见第 6 节)。 7. 用 `#include` 依赖图生成批次 2 的移植顺序(拓扑序),替换原来"互不共享实现文件即可并行"的假设:共享头文件的单元, 头文件由先做的那个单元负责,后面的单元只能在它合入后开始。 + **已完成**:`port_deps.py`(显式 `#include` + 按符号解析的 StdAfx 隐式依赖)生成 `audit/slices/2V0–2V3.json` + 和 `audit/slices/batch2-order.json`。结论:每个切片的头文件闭包约 210 个(其中平台层约 110 个,来自 + `ThingInstance.h`/`GrpBase.h` 等);P0 单元里 `InstanceBase`、`PythonCharacterManager`、`PythonPlayer`、 + `PythonPlayerEventHandler` 的头文件互相包含,必须作为一组串行移植,`ActorInstance.cpp` 排在最前。 ### 批次 2R:资源包能力盘点