181404010226 1 тиждень тому
батько
коміт
fad2256028

+ 384 - 0
assets/Data/第一关 .json

@@ -0,0 +1,384 @@
+{
+  "name": "第一关",
+  "description": "案例关",
+  "timeLimit": 300,
+  "randomNpcCount": 6,
+  "defaultQuestions": [
+    "询问为何不在名单内?",
+    "询问通行证?",
+    "询问外貌?"
+  ],
+  "npcs": [
+    {
+      "type": "real",
+      "characterId": 3,
+      "characterName": "角色3",
+      "skinId": 1,
+      "skinName": "cc1",
+      "qaPairs": [
+        {
+          "question": "询问为何不在名单内?",
+          "answers": [
+            "我明明就在名单里"
+          ]
+        },
+        {
+          "question": "询问外貌?",
+          "answers": [
+            "我的长相有什么问题吗"
+          ]
+        }
+      ],
+      "pass": {
+        "name": "杨柳青",
+        "room": "103",
+        "identityId": "20421152",
+        "reason": "我是这栋楼的住户",
+        "avatarPath": "avatars/3/3.png",
+        "hasStamp": true
+      },
+      "personal": {
+        "id": "20421152",
+        "info": "职业:酒店前台\n-有时戴眼镜\n-使用不同颜色的口红\n-有时穿着工作服\n-记性很好",
+        "avatarPath": "avatars/3/3.png",
+        "hasRoommate": false,
+        "roommate": null
+      },
+      "error": {
+        "errorTypes": [],
+        "description": ""
+      }
+    },
+    {
+      "type": "real",
+      "characterId": 1,
+      "characterName": "角色1",
+      "skinId": 1,
+      "skinName": "aa3",
+      "qaPairs": [
+        {
+          "question": "询问为何不在名单内?",
+          "answers": [
+            "我明明就在名单里"
+          ]
+        },
+        {
+          "question": "询问外貌?",
+          "answers": [
+            "我的外貌有什么问题吗"
+          ]
+        }
+      ],
+      "pass": {
+        "name": "吴托尼",
+        "room": "201",
+        "identityId": "30225445",
+        "reason": "我是这栋楼的住户",
+        "avatarPath": "avatars/10/10.png",
+        "hasStamp": true
+      },
+      "personal": {
+        "id": "30225445",
+        "info": "职业:理发师\n-戴不同的耳环\n-偶尔戴太阳镜\n-讨厌染发\n-经常牙痛",
+        "avatarPath": "avatars/10/10.png",
+        "hasRoommate": false,
+        "roommate": null
+      },
+      "error": {
+        "errorTypes": [],
+        "description": ""
+      }
+    },
+    {
+      "type": "real",
+      "characterId": 8,
+      "characterName": "角色8",
+      "skinId": 1,
+      "skinName": "hh2",
+      "qaPairs": [
+        {
+          "question": "询问为何不在名单内?",
+          "answers": [
+            "我在名单里,你再仔细看一下"
+          ]
+        },
+        {
+          "question": "询问外貌?",
+          "answers": [
+            "我的外貌有什么问题吗",
+            "我的外貌没问题,你是不是歧视胖子!"
+          ]
+        }
+      ],
+      "pass": {
+        "name": " 李美兰",
+        "room": "101",
+        "identityId": "15642452",
+        "reason": "我是这栋楼的住户",
+        "avatarPath": "avatars/1/1.png",
+        "hasStamp": true
+      },
+      "personal": {
+        "id": "15642452",
+        "info": "职业:小卖铺老板\n-喜欢带各种首饰珠宝\n-喜欢尝试不同妆容\n-以胖为美,对自己的身材非常自信\n-睡眠质量不好",
+        "avatarPath": "avatars/1/1.png",
+        "hasRoommate": false,
+        "roommate": null
+      },
+      "error": {
+        "errorTypes": [],
+        "description": ""
+      }
+    },
+    {
+      "type": "real",
+      "characterId": 5,
+      "characterName": "角色5",
+      "skinId": 1,
+      "skinName": "ee1",
+      "qaPairs": [
+        {
+          "question": "询问为何不在名单内?",
+          "answers": [
+            "我明明就在名单上"
+          ]
+        },
+        {
+          "question": "询问外貌?",
+          "answers": [
+            "你眼瞎吗?"
+          ]
+        }
+      ],
+      "pass": {
+        "name": "王威廉",
+        "room": "105",
+        "identityId": "16584522",
+        "reason": "我是这栋楼的住户",
+        "avatarPath": "avatars/4/4.png",
+        "hasStamp": true
+      },
+      "personal": {
+        "id": "16584522",
+        "info": "职业:报社记者\n-戴各种帽子\n-总是穿着心爱的皮夹克\n-非常喜欢自己的胡子\n-性格高傲\n-戴各种款式的墨镜\n-有过敏性鼻炎",
+        "avatarPath": "avatars/4/4.png",
+        "hasRoommate": false,
+        "roommate": null
+      },
+      "error": {
+        "errorTypes": [],
+        "description": ""
+      }
+    },
+    {
+      "type": "real",
+      "characterId": 2,
+      "characterName": "角色2",
+      "skinId": 1,
+      "skinName": "bb3",
+      "qaPairs": [
+        {
+          "question": "询问为何不在名单内?",
+          "answers": [
+            "带客户看房被放鸽子,所以提早下班了"
+          ]
+        },
+        {
+          "question": "询问外貌?",
+          "answers": [
+            "我稍稍打扮了一下",
+            "我的外貌没问题"
+          ]
+        }
+      ],
+      "pass": {
+        "name": "房焱戌",
+        "room": "202",
+        "identityId": "54730178",
+        "reason": "我是这栋楼的住户",
+        "avatarPath": "avatars/9/9.png",
+        "hasStamp": true
+      },
+      "personal": {
+        "id": "54730178",
+        "info": "职业:房产中介\n-永远保持微笑\n-只穿西装\n-偶尔戴高礼帽\n-经常更换发型\n-爱吃巧克力",
+        "avatarPath": "avatars/9/9.png",
+        "hasRoommate": false,
+        "roommate": null
+      },
+      "error": {
+        "errorTypes": [],
+        "description": ""
+      }
+    },
+    {
+      "type": "fake",
+      "characterId": 4,
+      "characterName": "角色4",
+      "skinId": 1,
+      "skinName": "dd6",
+      "qaPairs": [
+        {
+          "question": "询问为何不在名单内?",
+          "answers": [
+            "我明明就在名单上"
+          ]
+        },
+        {
+          "question": "询问外貌?",
+          "answers": [
+            "我的外貌和人类一样"
+          ]
+        }
+      ],
+      "pass": {
+        "name": "史森",
+        "room": "203",
+        "identityId": "45682565",
+        "reason": "我是这栋楼的住户",
+        "avatarPath": "avatars/7/7.png",
+        "hasStamp": true
+      },
+      "personal": {
+        "id": "45682565",
+        "info": "职业:科学家 \n-偶尔皮肤过敏\n-偶尔发生实验事故\n-爱穿各种颜色的格子衫\n-永远心事重重\n-丢三落四",
+        "avatarPath": "avatars/7/7.png",
+        "hasRoommate": false,
+        "roommate": null
+      },
+      "error": {
+        "errorTypes": [
+          7
+        ],
+        "description": ""
+      }
+    },
+    {
+      "type": "fake",
+      "characterId": 6,
+      "characterName": "角色6",
+      "skinId": 1,
+      "skinName": "ff1",
+      "qaPairs": [
+        {
+          "question": "询问为何不在名单内?",
+          "answers": [
+            "今天要看的病人很多,一直加班到现在",
+            "我给自己充电去了"
+          ]
+        },
+        {
+          "question": "询问外貌?",
+          "answers": [
+            "我的外貌没问题"
+          ]
+        }
+      ],
+      "pass": {
+        "name": "蒋雯丽",
+        "room": "205",
+        "identityId": "36525629",
+        "reason": "我是这栋楼的住户",
+        "avatarPath": "avatars/6/6.png",
+        "hasStamp": false
+      },
+      "personal": {
+        "id": "36525269",
+        "info": "职业:美甲师\n-喜欢戴不同的金饰\n-偶尔戴眼镜\n-喜欢穿不同的衣服\n-待人冷漠\n-讨厌绿色",
+        "avatarPath": "avatars/6/6.png",
+        "hasRoommate": false,
+        "roommate": null
+      },
+      "error": {
+        "errorTypes": [
+          0,
+          5,
+          8
+        ],
+        "description": ""
+      }
+    },
+    {
+      "type": "fake",
+      "characterId": 7,
+      "characterName": "角色7",
+      "skinId": 1,
+      "skinName": "gg7",
+      "qaPairs": [
+        {
+          "question": "询问为何不在名单内?",
+          "answers": [
+            "我明明就在名单里"
+          ]
+        },
+        {
+          "question": "询问外貌?",
+          "answers": [
+            "我的外貌没问题",
+            "今天天气不错"
+          ]
+        }
+      ],
+      "pass": {
+        "name": "华摩斯",
+        "room": "301",
+        "identityId": "35982562",
+        "reason": "我来调查谋杀案",
+        "avatarPath": "avatars/5/5.png",
+        "hasStamp": true
+      },
+      "personal": {
+        "id": "35982562",
+        "info": "职业:私家侦探\n-有时戴墨镜\n-有时忘记刮胡子\n-总是带着帽子\n-衣服有时来不及清洗",
+        "avatarPath": "avatars/5/5.png",
+        "hasRoommate": true,
+        "roommate": {
+          "id": "59634810",
+          "info": "职业:网络作家\n-戴不同的眼镜\n-讨厌化妆和染发\n-在家工作\n-偶尔更换发型\n-喜欢戴不同的贝壳项链",
+          "avatarPath": "avatars/8/8.png"
+        }
+      },
+      "error": {
+        "errorTypes": [
+          3,
+          7
+        ],
+        "description": ""
+      }
+    }
+  ],
+  "todayList": [
+    {
+      "name": "杨柳青",
+      "avatarPath": "avatars/3/3.png"
+    },
+    {
+      "name": " 李美兰",
+      "avatarPath": "avatars/1/1.png"
+    },
+    {
+      "name": "王威廉",
+      "avatarPath": "avatars/4/4.png"
+    },
+    {
+      "name": "华摩斯",
+      "avatarPath": "avatars/5/5.png"
+    },
+    {
+      "name": "吴托尼",
+      "avatarPath": "avatars/10/10.png"
+    },
+    {
+      "name": "史森",
+      "avatarPath": "avatars/7/7.png"
+    },
+    {
+      "name": "苏珊娜",
+      "avatarPath": "avatars/2/2.png"
+    },
+    {
+      "name": "林静怡",
+      "avatarPath": "avatars/8/8.png"
+    }
+  ]
+}

+ 11 - 0
assets/Data/第一关 .json.meta

@@ -0,0 +1,11 @@
+{
+  "ver": "2.0.1",
+  "importer": "json",
+  "imported": true,
+  "uuid": "a9a54ef0-04a6-4c9b-9d24-0e592b155629",
+  "files": [
+    ".json"
+  ],
+  "subMetas": {},
+  "userData": {}
+}

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
assets/resources/01/1.json


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
assets/resources/02/2.json


Різницю між файлами не показано, бо вона завелика
+ 0 - 2247
assets/resources/03/3.json


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
assets/resources/04/4.json


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
assets/resources/05/5.json


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
assets/resources/06/6.json


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
assets/resources/07/7.json


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
assets/resources/08/8.json


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
assets/resources/09/9.json


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
assets/resources/10/10.json


+ 107 - 1
assets/scripts/DataManager.ts

@@ -4,7 +4,32 @@ const { ccclass, property } = _decorator;
 // 问答对接口
 interface QAPair {
     question: string;
-    answer: string;
+    answers: string[];
+}
+
+// 通行证信息
+interface PassInfo {
+    name: string;
+    room: string;
+    identityId: string;
+    reason: string;
+    avatarPath: string;
+    hasStamp: boolean;
+}
+
+// 个人信息
+interface PersonalInfo {
+    id: string;
+    info: string;
+    avatarPath: string;
+    hasRoommate: boolean;
+    roommate: PersonalInfo | null;
+}
+
+// 错误信息
+interface ErrorInfo {
+    errorTypes: number[];
+    description: string;
 }
 
 // NPC接口
@@ -15,13 +40,26 @@ interface NPC {
     skinId: number;
     skinName: string;
     qaPairs: QAPair[];
+    pass: PassInfo;
+    personal: PersonalInfo;
+    error: ErrorInfo;
+}
+
+// 今日名单项
+interface TodayListItem {
+    name: string;
+    avatarPath: string;
 }
 
 // 关卡数据接口
 interface LevelData {
     name: string;
     description: string;
+    timeLimit: number;
+    randomNpcCount: number;
+    defaultQuestions: string[];
     npcs: NPC[];
+    todayList: TodayListItem[];
 }
 
 @ccclass('DataManager')
@@ -196,4 +234,72 @@ export class DataManager extends Component {
     public reloadAllLevels(): void {
         this.loadAllLevels();
     }
+
+    /**
+     * 获取当前关卡的时间限制(秒)
+     */
+    public getCurrentLevelTimeLimit(): number {
+        const level = this.getCurrentLevel();
+        return level ? level.timeLimit : 0;
+    }
+
+    /**
+     * 获取当前关卡的随机NPC数量
+     */
+    public getRandomNpcCount(): number {
+        const level = this.getCurrentLevel();
+        return level ? level.randomNpcCount : 0;
+    }
+
+    /**
+     * 获取当前关卡的默认问题列表
+     */
+    public getDefaultQuestions(): string[] {
+        const level = this.getCurrentLevel();
+        return level ? level.defaultQuestions : [];
+    }
+
+    /**
+     * 获取当前关卡的今日名单
+     */
+    public getTodayList(): TodayListItem[] {
+        const level = this.getCurrentLevel();
+        return level ? level.todayList : [];
+    }
+
+    /**
+     * 根据角色ID获取NPC的通行证信息
+     * @param characterId 角色ID
+     */
+    public getNPCPassInfo(characterId: number): PassInfo | null {
+        const npc = this.getNPCById(characterId);
+        return npc ? npc.pass : null;
+    }
+
+    /**
+     * 根据角色ID获取NPC的个人信息
+     * @param characterId 角色ID
+     */
+    public getNPCPersonalInfo(characterId: number): PersonalInfo | null {
+        const npc = this.getNPCById(characterId);
+        return npc ? npc.personal : null;
+    }
+
+    /**
+     * 根据角色ID获取NPC的错误信息
+     * @param characterId 角色ID
+     */
+    public getNPCErrorInfo(characterId: number): ErrorInfo | null {
+        const npc = this.getNPCById(characterId);
+        return npc ? npc.error : null;
+    }
+
+    /**
+     * 检查指定名称的人是否在今日名单上
+     * @param name 人物名称
+     */
+    public isPersonInTodayList(name: string): boolean {
+        const todayList = this.getTodayList();
+        return todayList.some(item => item.name.trim() === name.trim());
+    }
 } 

+ 22 - 12
assets/scripts/QuestionAnswerManager.ts

@@ -9,7 +9,7 @@ const { ccclass, property } = _decorator;
  */
 interface QuestionAnswer {
     question: string;     // 问题文本
-    answer: string;       // 回答文本
+    answers: string[];    // 回答文本数组
     showPassCard?: boolean; // 是否显示通行证
 }
 
@@ -97,28 +97,28 @@ export class QuestionAnswerManager extends Component {
         this.questionAnswerPairs = [
             {
                 question: "询问为何不在名单内?",
-                answer: "我没见过你的资料。你确定你应该在这个区域吗?"
+                answers: ["我没见过你的资料。你确定你应该在这个区域吗?"]
             },
             {
                 question: "询问通行证?",
-                answer: "这是我的通行证,请过目。",
+                answers: ["这是我的通行证,请过目。"],
                 showPassCard: true // 这个问题会显示通行证
             },
             {
                 question: "询问外貌?",
-                answer: "我对你的外貌没有任何评价。我只负责确认身份。"
+                answers: ["我对你的外貌没有任何评价。我只负责确认身份。"]
             },
             {
                 question: "你是谁?",
-                answer: "我是这个区域的安全管理员,负责身份验证和访问控制。"
+                answers: ["我是这个区域的安全管理员,负责身份验证和访问控制。"]
             },
             {
                 question: "这是什么地方?",
-                answer: "这是一个受限制的区域,需要特殊许可才能进入。"
+                answers: ["这是一个受限制的区域,需要特殊许可才能进入。"]
             },
             {
                 question: "我可以离开吗?",
-                answer: "如果你没有通行证,建议你尽快离开,否则可能会有麻烦。"
+                answers: ["如果你没有通行证,建议你尽快离开,否则可能会有麻烦。"]
             }
         ];
     }
@@ -182,7 +182,17 @@ export class QuestionAnswerManager extends Component {
 
         // 获取问答对
         const qa = this.questionAnswerPairs[questionIndex];
-        console.log(`问题: "${qa.question}", 答案: "${qa.answer}", 显示通行证: ${qa.showPassCard}`);
+        
+        // 从回答数组中随机选择一个回答
+        let selectedAnswer = "";
+        if (qa.answers && qa.answers.length > 0) {
+            const randomIndex = Math.floor(Math.random() * qa.answers.length);
+            selectedAnswer = qa.answers[randomIndex];
+        } else {
+            selectedAnswer = "无法回答这个问题。";
+        }
+        
+        console.log(`问题: "${qa.question}", 选择的回答: "${selectedAnswer}", 显示通行证: ${qa.showPassCard}`);
         
         // 检查是否需要显示通行证
         if (qa.showPassCard && this.passCardManager) {
@@ -228,8 +238,8 @@ export class QuestionAnswerManager extends Component {
         }
         
         // 使用对话管理器显示回答,包含表情
-        if (this.dialogueManager && qa) {
-            this.dialogueManager.showDialogue(qa.answer);
+        if (this.dialogueManager && selectedAnswer) {
+            this.dialogueManager.showDialogue(selectedAnswer);
         }
     }
 
@@ -313,7 +323,7 @@ export class QuestionAnswerManager extends Component {
         // 添加固定的"询问通行证"问题
         const passCardQuestion = {
             question: "询问通行证?",
-            answer: "这是我的通行证,请过目。",
+            answers: ["这是我的通行证,请过目。"],
             showPassCard: true
         };
         
@@ -347,7 +357,7 @@ export class QuestionAnswerManager extends Component {
             while (this.questionAnswerPairs.length < 3) {
                 const backupQuestion = {
                     question: `备用问题${this.questionAnswerPairs.length + 1}`,
-                    answer: "这是一个标准回答。"
+                    answers: ["这是一个标准回答。"]
                 };
                 this.questionAnswerPairs.push(backupQuestion);
                 console.log('添加备用问题:', backupQuestion);

+ 0 - 166
assets/scripts/SimpleCharacterView.ts

@@ -1,166 +0,0 @@
-import { _decorator, Component, Node, Sprite, Label, resources, SpriteFrame, Color, CCInteger } from 'cc';
-const { ccclass, property } = _decorator;
-
-@ccclass('SimpleCharacterView')
-export class SimpleCharacterView extends Component {
-    @property({
-        type: Sprite,
-        tooltip: '头像1显示'
-    })
-    avatarSprite1: Sprite = null;
-    
-    @property({
-        type: Sprite,
-        tooltip: '头像2显示'
-    })
-    avatarSprite2: Sprite = null;
-    
-    @property({
-        type: Sprite,
-        tooltip: '头像3显示'
-    })
-    avatarSprite3: Sprite = null;
-    
-    @property({
-        type: Sprite,
-        tooltip: '头像4显示'
-    })
-    avatarSprite4: Sprite = null;
-    
-    @property({
-        type: Label,
-        tooltip: '状态标签'
-    })
-    statusLabel: Label = null;
-    
-    @property({
-        tooltip: '角色1 ID',
-        type: CCInteger
-    })
-    characterId1: number = 1;
-    
-    @property({
-        tooltip: '角色2 ID',
-        type: CCInteger
-    })
-    characterId2: number = 3;
-    
-    @property({
-        tooltip: '角色3 ID',
-        type: CCInteger
-    })
-    characterId3: number = 5;
-    
-    @property({
-        tooltip: '角色4 ID',
-        type: CCInteger
-    })
-    characterId4: number = 7;
-    
-    @property({
-        tooltip: '头像变体索引',
-        type: CCInteger
-    })
-    avatarVariant: number = 5;
-    
-    // 加载成功的计数
-    private successCount: number = 0;
-    private totalTests: number = 0;
-
-    start() {
-        // 加载并显示所有头像
-        this.loadAllAvatars();
-    }
-    
-    loadAllAvatars() {
-        this.updateStatus('开始加载头像...');
-        this.successCount = 0;
-        this.totalTests = 0;
-        
-        // 加载每个角色的头像
-        if (this.avatarSprite1 && this.characterId1 > 0) {
-            this.loadAvatar(this.characterId1, this.avatarSprite1, 1);
-        }
-        
-        if (this.avatarSprite2 && this.characterId2 > 0) {
-            this.loadAvatar(this.characterId2, this.avatarSprite2, 2);
-        }
-        
-        if (this.avatarSprite3 && this.characterId3 > 0) {
-            this.loadAvatar(this.characterId3, this.avatarSprite3, 3);
-        }
-        
-        if (this.avatarSprite4 && this.characterId4 > 0) {
-            this.loadAvatar(this.characterId4, this.avatarSprite4, 4);
-        }
-    }
-    
-    loadAvatar(characterId: number, targetSprite: Sprite, slotNumber: number) {
-        this.totalTests++;
-        
-        // 构建头像路径 - 使用新的下划线格式
-        const avatarPath = `avatars/${characterId}/avatar_${characterId}_${this.avatarVariant}/spriteFrame`;
-        
-        console.log(`[${slotNumber}] 尝试加载: ${avatarPath}`);
-        
-        // 加载头像
-        resources.load(avatarPath, SpriteFrame, (err, spriteFrame) => {
-            if (err) {
-                console.error(`[${slotNumber}] 加载失败: ${avatarPath}`, err);
-                
-                // 尝试备用路径
-                this.tryFallbackPaths(characterId, targetSprite, slotNumber);
-            } else {
-                targetSprite.spriteFrame = spriteFrame;
-                this.successCount++;
-                console.log(`[${slotNumber}] 加载成功: ${avatarPath}`);
-                this.updateStatus(`成功加载 ${this.successCount}/${this.totalTests} 个头像`);
-            }
-        });
-    }
-    
-    tryFallbackPaths(characterId: number, targetSprite: Sprite, slotNumber: number) {
-        // 备用路径列表 - 使用新的下划线格式
-        const fallbackPaths = [
-            `avatars/${characterId}/avatar_${characterId}_1`,
-            `avatars/${characterId}/${characterId}`,
-            `0${characterId}/${characterId}`
-        ];
-        
-        let tried = 0;
-        
-        // 尝试下一个路径
-        const tryNextPath = (index: number) => {
-            if (index >= fallbackPaths.length) {
-                console.error(`[${slotNumber}] 所有路径尝试失败`);
-                return;
-            }
-            
-            tried++;
-            const path = fallbackPaths[index];
-            console.log(`[${slotNumber}] 尝试备用路径${tried}: ${path}`);
-            
-            resources.load(path, SpriteFrame, (err, spriteFrame) => {
-                if (err) {
-                    // 尝试下一个
-                    tryNextPath(index + 1);
-                } else {
-                    targetSprite.spriteFrame = spriteFrame;
-                    this.successCount++;
-                    console.log(`[${slotNumber}] 备用路径加载成功: ${path}`);
-                    this.updateStatus(`成功加载 ${this.successCount}/${this.totalTests} 个头像`);
-                }
-            });
-        };
-        
-        // 开始尝试备用路径
-        tryNextPath(0);
-    }
-    
-    updateStatus(message: string) {
-        if (this.statusLabel) {
-            this.statusLabel.string = message;
-        }
-        console.log('[SimpleCharacterView]', message);
-    }
-} 

+ 0 - 9
assets/scripts/SimpleCharacterView.ts.meta

@@ -1,9 +0,0 @@
-{
-  "ver": "4.0.24",
-  "importer": "typescript",
-  "imported": true,
-  "uuid": "96515d40-8763-471d-b324-758120c3f924",
-  "files": [],
-  "subMetas": {},
-  "userData": {}
-}

Деякі файли не було показано, через те що забагато файлів було змінено