Integrate mission-owned chat administration and menu

This commit is contained in:
2026-09-19 23:49:54 +02:00
parent 27989b85a3
commit 5e742691ad
154 changed files with 19498 additions and 134 deletions
+4 -3
View File
@@ -17,6 +17,7 @@ import time
import uuid
from native_provenance import snapshot, persist, bindings, seal_run
from native_report import analyze
from project_schema import parse_project
ROOT = Path(__file__).resolve().parents[1]
PROFILE_MARKER = '.erri-game-profile.json'
@@ -66,10 +67,10 @@ def packed_inventory(folder, project='core'):
result[name] = {'bytes': path.stat().st_size, 'sha256': digest.hexdigest()}
name, guid, dependencies = PACKED_PROJECTS[project]
text = (folder/'addon.gproj').read_text()
match = re.fullmatch(r'\s*GameProject\s*\{\s*ID\s+"'+name+r'"\s+GUID\s+"'+guid+r'"\s+TITLE\s+"[^"\r\n]+"\s+Dependencies\s*\{((?:\s*"[0-9A-F]{16}"\s*)+)\}\s*\}\s*', text)
actual = re.findall(r'"([0-9A-F]{16})"', match[1]) if match else []
match = parse_project(text, allow_core_menu=project == 'core')
actual = re.findall(r'"([0-9A-F]{16})"', match[4]) if match else []
expected = {PACKED_BASE, *(PACKED_PROJECTS[key][1] for key in dependencies)}
if not match or set(actual) != expected or len(actual) != len(expected):
if not match or match[1] != name or match[2] != guid or set(actual) != expected or len(actual) != len(expected):
refuse('Packed project identity or exact declared dependencies do not match '+project)
return result