0a3cee0e-d616-496c-ac8f-17c583b5ee07.js.map 16.9 KB
{"version":3,"sources":["assets/script/game/model/GameRoleDataModel.ts"],"names":[],"mappings":";;;;;;AAAA,+DAAqD;AAErD,uCAAwD;AACxD,uDAA2D;AAC3D,8EAA2E;AAC3E,wEAAqE;AACrE,gEAA6D;AAC7D,0EAAuE;AAEvE,yDAAsD;AAEtD,MAAqB,iBAAiB;IAAtC;QACY,SAAI,GAA8B,SAAiD,CAAC;QACpF,aAAQ,GAAW,CAAC,CAAC,CAAC;QACtB,cAAS,GAAgB,IAAI,GAAG,EAAU,CAAC;QAC3C,cAAS,GAAW,EAAE,CAAC;QAEvB,cAAS,GAAwB,IAAI,GAAG,EAAkB,CAAC;IAsOvE,CAAC;IApOU,SAAS,CAAC,GAA8B;QAC3C,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAED,mBAAmB;QACf,IAAI,IAAI,GAAG,CAAC,KAAa,EAAE,OAAe,EAAE,SAA0B,EAAE,KAAsB,EAAE,EAAE;YAC9F,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACxC,SAAS,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpD,IAAI,OAAO,GAAI,KAAgB,GAAI,SAAoB,CAAC;YACxD,qBAAS,CAAC,SAAS,CAAC,yBAAW,CAAC,MAAM,CAAC,mCAAgB,CAAC,cAAc,CAAC,2BAAY,CAAC,2BAA2B,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAChJ,CAAC,CAAA;QAED,gBAAU,CAAC,sBAAsB,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE/D,gBAAU,CAAC,sBAAsB,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,CAAC,EAAU;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,WAAW;QACP,IAAI,CAAC,GAAG,gBAAU,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACd,6DAA6D;QAC7D,IAAI,CAAC,GAAG,iBAAW,CAAC,yBAAyB,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACd,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,CAAC,CAAC;IACb,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,eAAwB,IAAI;QAClD,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7B,IAAI,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC;QACvB,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC;QACzB,IAAI,YAAY,EAAE;YACd,IAAI,CAAC,GAAG,gBAAU,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1D,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACd,CAAC,IAAI,MAAM,CAAC;YACZ,gBAAU,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SACzD;aAAM;YACH,IAAI,CAAC,GAAG,gBAAU,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAW,CAAC;YACpE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACd,CAAC,IAAI,MAAM,CAAC;YACZ,gBAAU,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SACzD;QACD,gBAAU,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IAED,WAAW,CAAC,IAAI,GAAG,sBAAQ,CAAC,MAAM,EAAE,IAAa;QAC7C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClE,OAAO,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACrG,CAAC;IAED,OAAO,CAAC,IAAa;QACjB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClE,IAAI,GAAG,GAAG,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,IAAI,EAAE;YACN,GAAG,IAAI,IAAI,CAAC;SACf;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,WAAW;QACP,IAAI,GAAG,GAAG,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;YACnB,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC9B;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,WAAW;QACP,IAAI,GAAG,GAAG,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,gBAAgB;QACZ,IAAI,OAAO,GAAG,oCAAa,CAAC,YAAY,CAAC,yCAAmB,CAAC,CAAC;QAC9D,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAC7C,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,EAAE,EAAE;YACnC,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC;YACxC,IAAI,IAAI,IAAI,UAAU,EAAE;gBACpB,IAAI,IAAI,UAAU,CAAC;gBACnB,KAAK,GAAG,EAAE,CAAC;aACd;iBAAM;gBACH,MAAM;aACT;SACJ;QACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IAC1E,CAAC;IAED,OAAO,CAAC,EAAU;QACd,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;YAC9B,QAAQ,IAAI,KAAK,CAAC;YAClB,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE;gBAClC,QAAQ,IAAI,GAAG,CAAC;aACnB;YACD,EAAE,KAAK,CAAC;SACX;QAED,gBAAU,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC;QAC1E,gBAAU,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,UAAU,CAAC,EAAU;QACjB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,gBAAU,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACrE,gBAAU,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,QAAQ,GAAG,gBAAU,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;QAEhF,IAAI,KAAK,GAAG,gBAAU,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAW,CAAC;QACrF,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACzC,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE;YACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClD;IACL,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,KAAK,GAAG,mCAAgB,CAAC,cAAc,EAAE,CAAC;QAC9C,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;YACnB,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,SAAS,GAAG,gBAAU,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,CAAW,CAAC;YACvG,SAAS,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;SAC3C;IACL,CAAC;IAEM,QAAQ,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAEM,QAAQ,CAAC,EAAU,EAAE,GAAW;QACnC,IAAI,GAAG,GAA2C,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QACnF,IAAI,GAAG,GAAG,mCAAgB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,SAAS,GAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE;YACZ,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,EAAE,GAAG,YAAY,CAAC;YAC/C,OAAO,GAAG,CAAC;SACd;QACD,IAAI,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;QAC7D,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE;YACrB,GAAG,CAAC,SAAS,GAAG,2CAA2C,GAAG,GAAG,CAAC;YAClE,OAAO,GAAG,CAAC;SACd;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAW,CAAC;QAC7C,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,EAAE;YACzB,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;YACnB,GAAG,CAAC,SAAS,GAAG,0CAA0C,GAAG,GAAG,CAAC;YACjE,OAAO,GAAG,CAAC;SACd;aAAM;YACH,KAAK,IAAI,GAAG,CAAC;YACb,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;SACrB;QACD,IAAI,KAAK,GAAG,GAAG,EAAE;YACb,GAAG,CAAC,SAAS,GAAG,iCAAiC,CAAC;SACrD;aAAM,IAAI,KAAK,KAAK,GAAG,EAAE;YACtB,GAAG,CAAC,SAAS,GAAG,iBAAiB,CAAC;SACrC;aAAM,IAAI,KAAK,GAAG,CAAC,EAAE;YAClB,GAAG,CAAC,SAAS,GAAG,6BAA6B,CAAC;SACjD;aAAM;YACH,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;SAC7B;QACD,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QAClC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC9B,gBAAU,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC;QAC/E,gBAAU,CAAC,UAAU,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC;IACf,CAAC;IAGM,WAAW;QACd,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE;YAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;SACzB;aAAM;YACH,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;IACL,CAAC;IAEM,WAAW,CAAC,IAAY;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,sBAAsB,CAAC,IAAa;QACvC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI;YACzB,OAAO,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SAEjG;aAAM;YACH,OAAO,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,sBAAQ,CAAC,MAAM,CAAC;SAE/G;IACL,CAAC;CAEJ;AA5OD,oCA4OC","file":"","sourceRoot":"/","sourcesContent":["import { ConfigManager } from \"simba-config-manager\";\r\nimport { DeepReadonlyObject } from \"simba-utils\";\r\nimport { GameRecord, PlotManager } from \"../../avg/AVG\";\r\nimport { FaceType, RoleType } from \"../../avg/EditorEnums\";\r\nimport { GameTextData } from \"../../common/gameplay/gamedata/GameTextData\";\r\nimport { UIManager } from \"../../common/gameplay/managers/UIManager\";\r\nimport { StringUtils } from \"../../common/utils/StringUtils\";\r\nimport { relationLevelConfig } from \"../../config/RelationLevelConfig\";\r\nimport { IRole } from \"../../config/Role\";\r\nimport { GameModelManager } from \"./GameModelManager\";\r\n\r\nexport default class GameRoleDataModel {\r\n    private _cfg: DeepReadonlyObject<IRole> = undefined as unknown as DeepReadonlyObject<IRole>;\r\n    private _curSkin: number = -1;\r\n    private _skinMaps: Set<number> = new Set<number>();\r\n    private _roleName: string = \"\";\r\n\r\n    private _itemMaps: Map<number, number> = new Map<number, number>();\r\n\r\n    public setConfig(cfg: DeepReadonlyObject<IRole>) {\r\n        this._cfg = cfg;\r\n        this.initDate();\r\n    }\r\n\r\n    public getConfig() {\r\n        return this._cfg;\r\n    }\r\n\r\n    initDate() {\r\n        this.initSkin();\r\n        this.initData();\r\n        this.initVariablesChange();\r\n    }\r\n\r\n    initVariablesChange() {\r\n        let func = (scope: string, varName: string, prevValue: string | number, value: string | number) => {\r\n            value = value === undefined ? 0 : value;\r\n            prevValue = prevValue === undefined ? 0 : prevValue;\r\n            let newLike = (value as number) - (prevValue as number);\r\n            UIManager.showToast(StringUtils.format(GameModelManager.getLanguageTxt(GameTextData.GAME_TEXT_LIKE_CHANGE_VALUE), this._cfg.name, newLike));\r\n        }\r\n\r\n        GameRecord.onRecordVariableChange(\"like\" + this._cfg.id, func);\r\n\r\n        GameRecord.onGlobalVariableChange(\"like\" + this._cfg.id, func);\r\n    }\r\n\r\n    hasSkin(id: number) {\r\n        return this._skinMaps.has(id);\r\n    }\r\n\r\n    getRoleLike(): number {\r\n        let g = GameRecord.globalVariables[\"like\" + this._cfg.id];\r\n        g = g ? g : 0;\r\n        // let r = GameRecord.recordVariables[\"like\" + this._cfg.id];\r\n        let r = PlotManager.getAllRecordVariableValue(\"like\" + this._cfg.id);\r\n        r = r ? r : 0;\r\n        let l = g + r;\r\n        return l;\r\n    }\r\n\r\n    addRoleLike(like: number, globalRecord: boolean = true) {\r\n        let pre = this.getRoleLike();\r\n        let after = pre + like;\r\n        after = after > 0 ? after : 0;\r\n        let offset = after - pre;\r\n        if (globalRecord) {\r\n            let g = GameRecord.globalVariables[\"like\" + this._cfg.id];\r\n            g = g ? g : 0;\r\n            g += offset;\r\n            GameRecord.globalVariables[\"like\" + this._cfg.id] = g;\r\n        } else {\r\n            let r = GameRecord.recordVariables[\"like\" + this._cfg.id] as number;\r\n            r = r ? r : 0;\r\n            r += offset;\r\n            GameRecord.recordVariables[\"like\" + this._cfg.id] = r;\r\n        }\r\n        GameRecord.saveRecord();\r\n    }\r\n\r\n    getPortrait(face = FaceType.Normal, skin?: number) { // TODO 默认皮肤更改?\r\n        if (skin === undefined && this._curSkin > 0) skin = this._curSkin;\r\n        return \"textures/portrait/\" + this._cfg.id + \"/\" + (skin !== undefined ? skin + \"/\" : \"\") + face;\r\n    }\r\n\r\n    getBust(skin?: number) {\r\n        if (skin === undefined && this._curSkin > 0) skin = this._curSkin;\r\n        let ret = \"textures/bust/\" + this._cfg.id;\r\n        if (skin) {\r\n            ret += skin;\r\n        }\r\n        return ret;\r\n    }\r\n\r\n    getHeadIcon() {\r\n        let ret = \"/textures/head_icon/\" + this._cfg.id;\r\n        if (this._curSkin > 0) {\r\n            ret += \"_\" + this._curSkin;\r\n        }\r\n        return ret;\r\n    }\r\n\r\n    getNameIcon() {\r\n        let ret = \"/textures/name_icon/\" + this._cfg.id;\r\n        return ret;\r\n    }\r\n\r\n    getRoleLikeLevel() {\r\n        let configs = ConfigManager.getAllConfig(relationLevelConfig);\r\n        let level = 0;\r\n        let like = this.getRoleLike();\r\n        const maxLevel = Object.keys(configs).length;\r\n        let levelValue = 0;\r\n        for (let id = 1; id <= maxLevel; id++) {\r\n            levelValue = configs[id].relation_value;\r\n            if (like >= levelValue) {\r\n                like -= levelValue;\r\n                level = id;\r\n            } else {\r\n                break;\r\n            }\r\n        }\r\n        return { level, currLike: like, nextLevelLike: levelValue, maxLevel };\r\n    }\r\n\r\n    addSkin(id: number) {\r\n        this._skinMaps.add(id);\r\n        let skinsstr = \"\";\r\n        let index = 0;\r\n        for (let value of this._skinMaps) {\r\n            skinsstr += value;\r\n            if (index != this._skinMaps.size - 1) {\r\n                skinsstr += \",\";\r\n            }\r\n            ++index;\r\n        }\r\n\r\n        GameRecord.globalVariables[\"skins_\" + this._cfg.id + \"_skins\"] = skinsstr;\r\n        GameRecord.autoSave();\r\n    }\r\n\r\n    setCurSkin(id: number) {\r\n        this._curSkin = id;\r\n        GameRecord.globalVariables[\"curskin_\" + this._cfg.id + \"_skin\"] = id;\r\n        GameRecord.autoSave();\r\n    }\r\n\r\n    getCurSkin(): number {\r\n        return this._curSkin;\r\n    }\r\n\r\n    initSkin() {\r\n        this._curSkin = GameRecord.globalVariables[\"curskin_\" + this._cfg.id + \"_skin\"];\r\n\r\n        let skins = GameRecord.globalVariables[\"skins_\" + this._cfg.id + \"_skins\"] as string;\r\n        skins = skins === undefined ? \"\" : skins;\r\n        let skinSpilt = skins.split(\",\");\r\n        for (let index = 0; index < skinSpilt.length; ++index) {\r\n            this._skinMaps.add(parseInt(skinSpilt[index]));\r\n        }\r\n    }\r\n\r\n    getOwnedSkins(): Set<number> {\r\n        return this._skinMaps;\r\n    }\r\n\r\n    initData() {\r\n        this._itemMaps.clear();\r\n        let props = GameModelManager.getItemConfigs();\r\n        for (let key in props) {\r\n            let value = props[key];\r\n            let recordNum = GameRecord.globalVariables[\"prop_\" + this._cfg.id + \"_\" + value.id + \"_num\"] as number;\r\n            recordNum = recordNum === undefined ? 0 : recordNum;\r\n            this._itemMaps.set(value.id, recordNum);\r\n        }\r\n    }\r\n\r\n    public getProps(id: number) {\r\n        return this._itemMaps.get(id);\r\n    }\r\n\r\n    public addProps(id: number, num: number): { result: boolean, errorinfo: string } {\r\n        let ret: { result: boolean, errorinfo: string } = { result: false, errorinfo: \"\" };\r\n        let cfg = GameModelManager.getItemConfig(id);\r\n        let validProp: boolean = cfg ? true : false;\r\n        if (!validProp) {\r\n            ret.errorinfo = \"prop id \" + id + \" not exist\";\r\n            return ret;\r\n        }\r\n        let max = cfg['max_num'] ? cfg['max_num'] : Number.MAX_VALUE;\r\n        if (Math.abs(num) > max) {\r\n            ret.errorinfo = \"input num over max , num abs value limit \" + max;\r\n            return ret;\r\n        }\r\n        let value = this._itemMaps.get(id) as number;\r\n        if (value >= max && num > 0) {\r\n            ret.result = false;\r\n            ret.errorinfo = \"cur value over or equal max value limit \" + max;\r\n            return ret;\r\n        } else {\r\n            value += num;\r\n            ret.result = true;\r\n        }\r\n        if (value > max) {\r\n            ret.errorinfo = \"value over max , set num as max\";\r\n        } else if (value === max) {\r\n            ret.errorinfo = \"value equal max\";\r\n        } else if (value < 0) {\r\n            ret.errorinfo = \"value less 0 , set num as 0\";\r\n        } else {\r\n            ret.errorinfo = \"succeed\";\r\n        }\r\n        value = value > max ? max : value;\r\n        value = value < 0 ? 0 : value;\r\n        this._itemMaps.set(id, value);\r\n        GameRecord.globalVariables[\"prop_\" + this._cfg.id + \"_\" + id + \"_num\"] = value;\r\n        GameRecord.saveRecord();\r\n        return ret;\r\n    }\r\n\r\n\r\n    public getRoleName() {\r\n        if (!this._roleName || this._roleName === \"\") {\r\n            return this._cfg.name;\r\n        } else {\r\n            return this._roleName;\r\n        }\r\n    }\r\n\r\n    public setRoleName(name: string) {\r\n        this._roleName = name;\r\n    }\r\n\r\n    /**\r\n     * \r\n     * @param skin 皮肤id\r\n     */\r\n    public getBagPortraitByRoleId(skin?: number) {\r\n        if (this._cfg.id == 2) { //自己\r\n            return \"textures/portrait/\" + this._cfg.id + \"/\" + (skin !== undefined ? skin + \"/\" : \"\") + 7;\r\n\r\n        } else {\r\n            return \"textures/portrait/\" + this._cfg.id + \"/\" + (skin !== undefined ? skin + \"/\" : \"\") + FaceType.Normal;\r\n\r\n        }\r\n    }\r\n\r\n}"]}