Commit 5c8d15ba by 张树文

清理gamemodelmanager不用的方法逻辑

1 parent fbb4427c
Showing with 49 additions and 1150 deletions
......@@ -9,12 +9,10 @@ import { DateType, PageIndex } from "../../avg/EditorEnums";
import { EditorEvents } from "../../avg/EditorEvents";
import { GameConstData } from "../../common/gameplay/gamedata/GameConstData";
import { FuncStateEnum, RedPotStateEnum } from "../../common/gameplay/gamedata/GameEnumData";
import { bedroomItemConfig } from "../../config/BedroomItemConfig";
import { ICharacterVoiceConfig } from "../../config/CharacterVoiceConfig";
import { dateSceneConfig } from "../../config/DateSceneConfig";
import { i18nConfig } from "../../config/I18nConfig";
import { itemConfig } from "../../config/ItemConfig";
import { IItemTbl } from "../../config/ItemTbl";
import { relationLevelConfig } from "../../config/RelationLevelConfig";
import { IRole, role } from "../../config/Role";
import { taoBaoShopUrlConfig } from "../../config/TaoBaoShopUrlConfig";
......@@ -36,7 +34,6 @@ export namespace GameModelManager {
export const MainDatingEventChanged = emitter.createEvent<(scenes: DatingEventSceneModel[]) => void>();
export const CheckDateGuide = emitter.createEvent<() => void>();//约会界面检测引导
export const CheckMsgGuide = emitter.createEvent<() => void>();//消息列表界面检测引导
export const RefreshDiscoverTabRed = emitter.createEvent<() => void>();//刷新发现页红点展示
export const AutoPopView = emitter.createEvent<(view: AutoPopViewType) => void>();//展示自动弹出界面
export const ShowDatingEventArrowGuide = emitter.createEvent<(isShow: boolean, wordPos?: cc.Vec3) => void>();//约会列表界面展示箭头
......@@ -53,8 +50,6 @@ export namespace GameModelManager {
export const UnlockItem = emitter.createEvent<(itemId: number) => void>();
/**回滚数据到指定剧情 */
export const RollBackToPlot = emitter.createEvent<(pid: number) => void>();
/**回滚剧情数据完成刷新所有状态 */
export const RefreshAllStatus = emitter.createEvent<() => void>();
/**触发死亡选项之后的事件派发 */
......@@ -69,8 +64,6 @@ export namespace GameModelManager {
export const SpecialToast = emitter.createEvent<(type: SpecialToastType) => void>();
/**从主界面跳转到游戏页面 */
export const JumpToViewInGame = emitter.createEvent<(index: PageIndex) => void>();
/**打开番外界面 */
export const OpenExtraPlotView = emitter.createEvent<() => void>();
/**关闭设置界面 */
export const CloseSettingView = emitter.createEvent<(index: PageIndex) => void>();
......@@ -102,12 +95,7 @@ export namespace GameModelManager {
isMainPlot = isChange;
}
export function isGiftUnlock() { return unlockGift; }
export async function rollbackPhoneCallIfNeeded() {
// if (phoneCallIndex < 0) {
// console.error("Error: no phone call.");
// }
if (phoneCallIndex >= 0 && phoneCallIndex < GameRecord.getCurrentRecordItems().length - 1) {
let ret = await PlotManager.rollbackToIndex(phoneCallIndex);
savePhoneCall();
......@@ -122,10 +110,6 @@ export namespace GameModelManager {
let languagesMap: Map<number, string> = new Map<number, string>(); //语言
//#endregion
export function getCurrentChapterId() {
return currPlots![0].chapterId;
}
export function getMessageScenesModel() {
return messageScenes!;
}
......@@ -320,47 +304,6 @@ export namespace GameModelManager {
backgroud: string
}
export function setEventResources(eventId: number, bgm: string, backgroud: string) {
let eventResources = GameRecord.globalVariables["EventResources"] as EventResourcesState[];
eventResources = eventResources ? eventResources : [];
let isNewEventId = true;
for (let i = 0; i < eventResources.length; i++) {
if (eventResources[i].eventId == eventId) {
if (bgm) {
eventResources[i].bgm = bgm;
}
if (backgroud) {
eventResources[i].backgroud = backgroud;
}
isNewEventId = false;
break;
}
}
if (isNewEventId) {
eventResources.push({
eventId: eventId,
bgm: bgm,
backgroud: backgroud
});
}
}
export function getBranchResources(eventId: number): EventResourcesState {
let eventResources: EventResourcesState = undefined as unknown as EventResourcesState;
let allEventResources = GameRecord.globalVariables["EventResources"] as EventResourcesState[];
if (allEventResources) {
for (let i = 0; i < allEventResources.length; i++) {
if (allEventResources[i].eventId == eventId) {
eventResources = allEventResources[i];
break;
} else {
eventResources = undefined as unknown as EventResourcesState;
}
}
}
return eventResources;
}
async function initConfigData() {
await ConfigManager.initConfigData(false);
await initLanguageConfig();
......@@ -386,7 +329,7 @@ export namespace GameModelManager {
}
function getLanguagePath() {
return "userdata/language/chinese"
return "userdata/language/chinese";
}
async function initLanguageConfig() {
let cfgFile = await ResUtils.loadRes<any>(getLanguagePath(), cc.JsonAsset);
......@@ -805,44 +748,6 @@ export namespace GameModelManager {
GameRecord.autoSave();
}
/**
* return:1.return all of the plot-unlocked-gifts ids arr;
*/
export function getRecordAlreadyUnlockedGifts(): number[] {
let rStr = GameRecord.recordVariables["plot_unlocked_gifts"] as string;
let a: number[] = [];
if (rStr && "" !== rStr.trim()) {
a = JSON.parse(rStr) as number[];
}
return a;
}
/**
* return: 1.return the new unlocked gifts ids ;
* 2.if you has showed this ids, you'd use function resumPlotUnlockedGifts to resume the data;
*/
export function getNewPlotUnlockedGifts(): number[] {
let items = GameRecord.globalVariables["plotunlockgifts"] as number[];
items = items === undefined ? [] : items;
return items;
}
/**
* resumPlotUnlockedGifts
*/
export function resumPlotUnlockedGifts() {
GameRecord.globalVariables["plotunlockgifts"] = [];
GameRecord.autoSave();
}
/**
* checkHasNewGiftUnlocked
*/
export function checkHasNewGiftUnlocked(): boolean {
let g = getNewPlotUnlockedGifts();
return g && g.length > 0;
}
export function checkVoiceNeedShowAD(vCfg: ICharacterVoiceConfig) {
let ret = false;
if (vCfg) {
......@@ -889,20 +794,6 @@ export namespace GameModelManager {
return curPlot && curPlot.chapterId === GameConstData.GAME_CONST_FIRST_CHAPTER_ID;
}
export function getRolesByRoleType(roleType: number) {
let cfg = ConfigManager.getAllConfig(role);
let roleList: DeepReadonlyObject<IRole>[] = [];
for (const key in cfg) {
let _roleData = cfg[key];
if (roleType == _roleData.RoleType) {
roleList.push(_roleData);
}
}
return roleList;
}
//about lucky draw begin
export function getLastFreeTime(): number {
let time: number = 0;
let recordKey: string = "luck_draw_free_time";
......@@ -934,66 +825,6 @@ export namespace GameModelManager {
return false;
}
export function setFreeState(state: FreeState) {
GameRecord.globalVariables["free_luckyDraw"] = state;
GameRecord.saveRecord();
}
export function getFreeState(): FreeState {
let r = GameRecord.globalVariables["free_luckyDraw"] as number;
r = r === FreeState.Cost ? FreeState.Cost : FreeState.Free;
return r;
}
export function checkLuckyDrawIsFree(): boolean {
let ret = false;
let lastFreeTime = getLastFreeTime();
let isNewDay: boolean = checkOverdue(lastFreeTime);
let freeState: FreeState = getFreeState();
if (isNewDay) {
ret = true;
setFreeState(FreeState.Free);
} else {
ret = freeState === FreeState.Free;
}
return ret;
}
export function setLastFreeTime(time?: number) {
let recordKey: string = "luck_draw_free_time";
GameRecord.globalVariables[recordKey] = time ? time : TimeManager.getTime();
GameRecord.saveRecord();
}
export function addSkinItemToRecord(itemId: number) {
let recordKey = "own_skins";
let exist = false;
let recordStr = GameRecord.globalVariables[recordKey] as string;
let skinItemIds: number[] = [];
if (recordStr) {
skinItemIds = JSON.parse(recordStr) as number[];
exist = skinItemIds.findIndex((v) => v === itemId) !== -1;
}
if (!exist) {
skinItemIds.push(itemId);
GameRecord.globalVariables[recordKey] = JSON.stringify(skinItemIds);
GameRecord.saveRecord();
RefreshDiscoverTabRed.emit();
}
}
export function checkHasOwnedSkin(itemId: number): boolean {
let recordKey = "own_skins";
let ret = false;
let recordStr = GameRecord.globalVariables[recordKey] as string;
if (recordStr) {
let skinItemIds: number[] = [];
skinItemIds = JSON.parse(recordStr) as number[];
ret = skinItemIds.findIndex((v) => v === itemId) !== -1;
}
return ret;
}
export function checkSkinAndGraceCondition(condition: DeepReadonlyObject<ConditionExpression>): boolean {
let ret: boolean = false;
if (condition.groups && condition.groups.length > 0
......@@ -1033,37 +864,10 @@ export namespace GameModelManager {
return level;
}
export function checkIsNeedEnterCurDateChapter(): boolean {
return isNeedEnterCurDateChapter;
}
export function setNotNeedEnterCurDateChapter() {
isNeedEnterCurDateChapter = false;
}
export function isDiscountAll(): boolean {
return false;
}
export function stepGetNewPlayerGift(isFirst: boolean, time?: number, step?: number) {
let timeRecord = GameRecord.globalVariables["n_p_r_g_s_t"] as number;
timeRecord = timeRecord ? timeRecord : TimeManager.getTime();
time = time ? time : 0;
time = time ? time : timeRecord;
const stepMax: number = 7;
step = step ? step : 1;
let recordKey = "n_p_r_g_s_p";
let record = GameRecord.globalVariables[recordKey] as number;
record = record ? record : 0;
record += step;
let overTime: boolean = checkOverdue(time);
if (record <= stepMax && (overTime || isFirst)) {
GameRecord.globalVariables[recordKey] = record;
GameRecord.globalVariables["n_p_r_g_s_t"] = TimeManager.getTime();
GameRecord.saveRecord();
}
}
export function registerAutoPopView(viewType: AutoPopViewType) {
if (_autoPopView.length === 0) {
_autoPopView.push(viewType);
......@@ -1087,38 +891,6 @@ export namespace GameModelManager {
}
}
export function checkWelfareNeedGuide() {
let time = GameRecord.globalVariables["sininsevendaydatetime"];
time = time === undefined ? 0 : time;
if (checkOverdue(time)) {
return true;
}
return false;
}
export function markResumeFullEnergy() {
let marked = checkResumeFullEnergyMarked();
if (marked) {
return;
}
let timeKeyStr: string = "resume_full_energy_time";
GameRecord.globalVariables[timeKeyStr] = TimeManager.getTime();
GameRecord.saveRecord();
}
export function checkResumeFullEnergyMarked(): boolean {
let mark: boolean = false;
let timeKeyStr: string = "resume_full_energy_time";
let timeRecord = GameRecord.globalVariables[timeKeyStr] as number;
if (timeRecord) {
let over = checkOverdue(timeRecord);
if (!over) {
mark = true;
}
}
return mark;
}
export function checkIsOverPlotLimitTime() {
let isOver: boolean = false;
let timeKeyStr: string = "plot_limit_time";
......@@ -1156,31 +928,6 @@ export namespace GameModelManager {
return blocked;
}
export function getCurPlotBlockedId(): number {
let id = PlotManager.getCurrentPlots()[0].id;
return id;
}
export function checkIsNeedShowPlotBlocked(): boolean {
let show: boolean = false;
let curPlot = PlotManager.getCurrentPlots()[0];
if (curPlot && curPlot.plotSceneType === PlotSceneType.BlockPlot) {
let over = checkIsOverPlotLimitTime();
if (!over) {
show = true;
}
}
return show;
}
export function isPlotBlockedOrToBeContinued(): boolean {
let isPlotBolcked = checkIsPlotBlocked();
let p = PlotManager.getCurrentPlots()[0];
let isToBeContinued = p && p.id === SpecialPlotId.ToBeContinued;
let preConditionFlag = isPlotBolcked || isToBeContinued;
return preConditionFlag;
}
export function getCurMainLinePlotId(): number {
let p = PlotManager.getCurrentPlots()[0];
return p ? p.id : 0;
......@@ -1202,24 +949,6 @@ export namespace GameModelManager {
}
/**
* 根据卧室物品Id获取对应的淘宝商品类型
* @param itemId 卧室物品Id
* @returns 返回值为卧室物品对应的淘宝商品类型
*/
export function getTypeByBedroomItemId(itemId: number): number {
let type: number = -1;
let cfg = ConfigManager.getAllConfig(bedroomItemConfig);
if (cfg) {
for (const id in cfg) {
if (cfg[id].bedroomItemId == itemId) {
type = cfg[id].itemType;
}
}
}
return type;
}
/**
* 根据商品类型获得该商品对应的淘宝地址链接
* @param type 商品类型
* @returns 返回值为商品类型对应的商品地址
......@@ -1348,44 +1077,6 @@ export namespace GameModelManager {
}
return autoShow;
}
/**
* 设置是否自动弹出紧急公告界面
* @param autoShow 是否自动弹出紧急公告界面
*/
export function setUrgentNoticeInfo(noticeInfo: UrgentNoticeInfo) {
GameRecord.globalVariables["UrgentNoticeInfo"] = noticeInfo;
GameRecord.saveRecord();
}
/**
* 获取是否自动弹出紧急公告界面
* @returns 返回值为是否自动弹出紧急公告界面
*/
export function getUrgentNoticeInfo(): UrgentNoticeInfo {
let noticeInfo = GameRecord.globalVariables["UrgentNoticeInfo"] as UrgentNoticeInfo;
noticeInfo = noticeInfo ? noticeInfo : { readed: false, autoShow: true };
return noticeInfo;
}
/**
* 设置是否自动弹出紧急公告界面
* @param autoShow 是否自动弹出紧急公告界面
*/
export function setNoticeReaded(readed: boolean) {
GameRecord.globalVariables["NoticeReaded"] = readed;
GameRecord.saveRecord();
}
/**
* 获取是否自动弹出紧急公告界面
* @returns 返回值为是否自动弹出紧急公告界面
*/
export function getNoticeReaded(): boolean {
let readed = GameRecord.globalVariables["NoticeReaded"] as boolean;
readed = readed ? readed : false;
return readed;
}
}
export interface IPlotContent {
......@@ -1397,9 +1088,4 @@ export interface IPlotContent {
export interface AutoShowNoticeInfo {
time: number;
autoShow: boolean;
}
export interface UrgentNoticeInfo {
readed: boolean;
autoShow: boolean;
}
\ No newline at end of file
......@@ -155,7 +155,6 @@ export class DatingEventSubpresenter extends Subpresenter<DatingEventSubview> {
onLeftButtonClickCallback: this.onLeftButtonClickCallback,
onRightButtonClickCallback: this.onRightButtonClickCallback,
onNameButtonClickCallback: this.onNameButtonClickCallback,
onExtraPlotButtonClickCallback: this.onExtraPlotButtonClickCallback,
onCloseSectionViewCallBack: this.onCloseSectionViewCallBack
});
}
......@@ -337,11 +336,7 @@ export class DatingEventSubpresenter extends Subpresenter<DatingEventSubview> {
this._disposable.add(GameModelManager.RefreshAllStatus.on(this.onRefreshAllStatus));
this._disposable.add(GameModelManager.CloseDatingSceneView.on(this.onCloseDatingSceneView));
this._disposable.add(GameModelManager.CloseExtraSceneView.on(this.onCloseExtraSceneView));
this._disposable.add(GameModelManager.OpenExtraPlotView.on(this.onExtraPlotButtonClickCallback));
// let isNeedEnterCurChapter = GameModelManager.checkIsNeedEnterCurDateChapter();
// if (isNeedEnterCurChapter) {
// this.selectCurChapter();
// }
this.selectCurChapter();
if (!this.view.isHidden) {
this.refreshMaxChapterIndex();
......@@ -652,8 +647,4 @@ export class DatingEventSubpresenter extends Subpresenter<DatingEventSubview> {
})
.start();
}
onExtraPlotButtonClickCallback = () => {
UIManager.pushPresenter(ExtraPlotViewPresenter, undefined);
}
}
\ No newline at end of file
......@@ -118,7 +118,6 @@ export class DatingScenePresenter extends Presenter<DatingEventSceneModel, Datin
if (bgPath) bgPath = "textures/background/dating_event/" + bgPath;
return this.view.setBackgroundEffect(bgPath);
}));
this._disposable.add(GameModelManager.RollBackToPlot.on(this.onClickRollBackBtn));
this._showScrollView = false;
this._disposable.add(GameModelManager.DeadEvent.on(this.onDeadEvent));
this._disposable.add(GameModelManager.SpecialToast.on(this.onSpecialToast));
......@@ -339,40 +338,6 @@ export class DatingScenePresenter extends Presenter<DatingEventSceneModel, Datin
return portrait;
}
onClickRollBackBtn = (pid: number) => {
CDKeyEventManager.getInstance().shiftCDKeyRemovePlotAD();
let removeAdCardNum: number = CDKeyEventManager.getInstance().checkCDKeyRemovePlotAD();
let temp: AlertDialogViewProps =
{
dataptr: {},
titlecontent: "此功能不可逆",
content: "使用传送门会清掉此章节到已解锁最新章节之间的剧情存档和剧情内产生的数值,<color=red>且不可逆</color>,确定使用传送门吗?",
ishasad: !(removeAdCardNum > 0),
istwobtn: true,
adconfig: "inject_fruit",
hasBanner: false,
callback: async (type, ret) => {
if (ret) {
let retainVar = this.getRetainVarKeyArr();
await PlotManager.rollbackToPlot(pid, false, retainVar);
this.rollBackDateAdArray(pid);
GameRecord.saveRecord();
this._showScrollView = !this._showScrollView;
this.view.closeView();
await GameModelManager.init((value: number) => {
});
GameModelManager.setIsChangePlotSceneType(true);
UIManager.showSceneToast("数据刷新完成");
let isSpecialScene: boolean = this._model.id === this._specialDealSceneId;
this._showBackBtn = !(isSpecialScene && this._model.status === DatingEventStatus.InProgress);
this.view.showBackBtn(this._showBackBtn);
GameModelManager.RefreshAllStatus.emit();
}
}
};
UIManager.pushPresenter(AlertDialogViewPresenter, temp);
}
getRetainVarKeyArr(): string[] {
let keyArr: string[] = [];
let branches = GameModelManager.getAllStartedBranches();
......
......@@ -125,11 +125,6 @@ export default class MainViewPresenter extends Presenter<undefined, MainView> {
}
}
onRefreshDiscoveryRedDot = () => {
this._viewProps.discoverRedDot = !GameModelManager.checkResumeFullEnergyMarked();
this.view.setProps(this._viewProps);
}
async start() { // 开始游戏
this._subPresenters[0] = await createPresenter(TabPresenterFactory[0]);
MainViewPresenter.tabIndex = 0;
......@@ -138,7 +133,6 @@ export default class MainViewPresenter extends Presenter<undefined, MainView> {
this.dealTabGuide(MainTabs.messageTab);
this._viewProps.selectedTab = MainTabs.messageTab;
this._disposable.add(GameModelManager.RefreshDiscoverTabRed.on(this.onRefreshDiscoveryRedDot));
this._disposable.add(GameModelManager.ShowPlotBlocked.on(this.onShowPlotBlocked));
this._disposable.add(GameModelManager.AutoPopView.on(this.onAutoPopView));
this._disposable.add(GameModelManager.UnlockItem.on(this.onUnlockItem));
......
......@@ -57,8 +57,6 @@ export default class NewNoticeViewPresenter extends Presenter<SourceView, NewNot
initView() {
//重置可关闭状态为false
this._canClose = false;
//根据是否是第一次弹起紧急公告判断延迟时间
//this._delayTime = GameModelManager.getNoticeReaded() ? 0 : 3;
this._delayTime = 0;
//重置提示文本状态
this.view.getCloseTipsLabel().string = "";
......@@ -262,7 +260,6 @@ export default class NewNoticeViewPresenter extends Presenter<SourceView, NewNot
onCloseButtonClickCalback = () => {
if (this._canClose) {
this.checkTipsToggleState();
GameModelManager.setNoticeReaded(true);
clearTimeout(this._closeTimeTicker);
this.view.close();
}
......
......@@ -32,7 +32,6 @@ export interface DatingEventSubviewProps extends ListViewProps<DatingEventItemPr
onLeftButtonClickCallback: () => void;
onRightButtonClickCallback: () => void;
onNameButtonClickCallback: () => void;
onExtraPlotButtonClickCallback: () => void;
onCloseSectionViewCallBack: () => void;
}
......
......@@ -16,7 +16,6 @@ const EditorEnums_1 = require("../../avg/EditorEnums");
const EditorEvents_1 = require("../../avg/EditorEvents");
const GameConstData_1 = require("../../common/gameplay/gamedata/GameConstData");
const GameEnumData_1 = require("../../common/gameplay/gamedata/GameEnumData");
const BedroomItemConfig_1 = require("../../config/BedroomItemConfig");
const DateSceneConfig_1 = require("../../config/DateSceneConfig");
const I18nConfig_1 = require("../../config/I18nConfig");
const ItemConfig_1 = require("../../config/ItemConfig");
......@@ -39,7 +38,6 @@ var GameModelManager;
GameModelManager.MainDatingEventChanged = emitter.createEvent();
GameModelManager.CheckDateGuide = emitter.createEvent(); //约会界面检测引导
GameModelManager.CheckMsgGuide = emitter.createEvent(); //消息列表界面检测引导
GameModelManager.RefreshDiscoverTabRed = emitter.createEvent(); //刷新发现页红点展示
GameModelManager.AutoPopView = emitter.createEvent(); //展示自动弹出界面
GameModelManager.ShowDatingEventArrowGuide = emitter.createEvent(); //约会列表界面展示箭头
GameModelManager.ShowPlotBlocked = emitter.createEvent(); //展示剧情阻断弹窗
......@@ -49,8 +47,6 @@ var GameModelManager;
/**报幕数据准备就绪事件 */
GameModelManager.ForceClickDataReady = emitter.createEvent();
GameModelManager.UnlockItem = emitter.createEvent();
/**回滚数据到指定剧情 */
GameModelManager.RollBackToPlot = emitter.createEvent();
/**回滚剧情数据完成刷新所有状态 */
GameModelManager.RefreshAllStatus = emitter.createEvent();
/**触发死亡选项之后的事件派发 */
......@@ -65,8 +61,6 @@ var GameModelManager;
GameModelManager.SpecialToast = emitter.createEvent();
/**从主界面跳转到游戏页面 */
GameModelManager.JumpToViewInGame = emitter.createEvent();
/**打开番外界面 */
GameModelManager.OpenExtraPlotView = emitter.createEvent();
/**关闭设置界面 */
GameModelManager.CloseSettingView = emitter.createEvent();
let messageScenes;
......@@ -90,12 +84,7 @@ var GameModelManager;
isMainPlot = isChange;
}
GameModelManager.setIsMainPlotSceneType = setIsMainPlotSceneType;
function isGiftUnlock() { return unlockGift; }
GameModelManager.isGiftUnlock = isGiftUnlock;
async function rollbackPhoneCallIfNeeded() {
// if (phoneCallIndex < 0) {
// console.error("Error: no phone call.");
// }
if (phoneCallIndex >= 0 && phoneCallIndex < AVG_1.GameRecord.getCurrentRecordItems().length - 1) {
let ret = await AVG_1.PlotManager.rollbackToIndex(phoneCallIndex);
savePhoneCall();
......@@ -110,10 +99,6 @@ var GameModelManager;
let roleDatasMap = new Map();
let languagesMap = new Map(); //语言
//#endregion
function getCurrentChapterId() {
return GameModelManager.currPlots[0].chapterId;
}
GameModelManager.getCurrentChapterId = getCurrentChapterId;
function getMessageScenesModel() {
return messageScenes;
}
......@@ -300,48 +285,6 @@ var GameModelManager;
return exist;
}
GameModelManager.checkBranchIsInProgress = checkBranchIsInProgress;
function setEventResources(eventId, bgm, backgroud) {
let eventResources = AVG_1.GameRecord.globalVariables["EventResources"];
eventResources = eventResources ? eventResources : [];
let isNewEventId = true;
for (let i = 0; i < eventResources.length; i++) {
if (eventResources[i].eventId == eventId) {
if (bgm) {
eventResources[i].bgm = bgm;
}
if (backgroud) {
eventResources[i].backgroud = backgroud;
}
isNewEventId = false;
break;
}
}
if (isNewEventId) {
eventResources.push({
eventId: eventId,
bgm: bgm,
backgroud: backgroud
});
}
}
GameModelManager.setEventResources = setEventResources;
function getBranchResources(eventId) {
let eventResources = undefined;
let allEventResources = AVG_1.GameRecord.globalVariables["EventResources"];
if (allEventResources) {
for (let i = 0; i < allEventResources.length; i++) {
if (allEventResources[i].eventId == eventId) {
eventResources = allEventResources[i];
break;
}
else {
eventResources = undefined;
}
}
}
return eventResources;
}
GameModelManager.getBranchResources = getBranchResources;
async function initConfigData() {
await simba_config_manager_1.ConfigManager.initConfigData(false);
await initLanguageConfig();
......@@ -780,44 +723,6 @@ var GameModelManager;
AVG_1.GameRecord.autoSave();
}
GameModelManager.setRedPotState = setRedPotState;
/**
* return:1.return all of the plot-unlocked-gifts ids arr;
*/
function getRecordAlreadyUnlockedGifts() {
let rStr = AVG_1.GameRecord.recordVariables["plot_unlocked_gifts"];
let a = [];
if (rStr && "" !== rStr.trim()) {
a = JSON.parse(rStr);
}
return a;
}
GameModelManager.getRecordAlreadyUnlockedGifts = getRecordAlreadyUnlockedGifts;
/**
* return: 1.return the new unlocked gifts ids ;
* 2.if you has showed this ids, you'd use function resumPlotUnlockedGifts to resume the data;
*/
function getNewPlotUnlockedGifts() {
let items = AVG_1.GameRecord.globalVariables["plotunlockgifts"];
items = items === undefined ? [] : items;
return items;
}
GameModelManager.getNewPlotUnlockedGifts = getNewPlotUnlockedGifts;
/**
* resumPlotUnlockedGifts
*/
function resumPlotUnlockedGifts() {
AVG_1.GameRecord.globalVariables["plotunlockgifts"] = [];
AVG_1.GameRecord.autoSave();
}
GameModelManager.resumPlotUnlockedGifts = resumPlotUnlockedGifts;
/**
* checkHasNewGiftUnlocked
*/
function checkHasNewGiftUnlocked() {
let g = getNewPlotUnlockedGifts();
return g && g.length > 0;
}
GameModelManager.checkHasNewGiftUnlocked = checkHasNewGiftUnlocked;
function checkVoiceNeedShowAD(vCfg) {
let ret = false;
if (vCfg) {
......@@ -864,19 +769,6 @@ var GameModelManager;
return curPlot && curPlot.chapterId === GameConstData_1.GameConstData.GAME_CONST_FIRST_CHAPTER_ID;
}
GameModelManager.checkIsDotTutorial = checkIsDotTutorial;
function getRolesByRoleType(roleType) {
let cfg = simba_config_manager_1.ConfigManager.getAllConfig(Role_1.role);
let roleList = [];
for (const key in cfg) {
let _roleData = cfg[key];
if (roleType == _roleData.RoleType) {
roleList.push(_roleData);
}
}
return roleList;
}
GameModelManager.getRolesByRoleType = getRolesByRoleType;
//about lucky draw begin
function getLastFreeTime() {
let time = 0;
let recordKey = "luck_draw_free_time";
......@@ -911,67 +803,6 @@ var GameModelManager;
return false;
}
GameModelManager.checkOverdue = checkOverdue;
function setFreeState(state) {
AVG_1.GameRecord.globalVariables["free_luckyDraw"] = state;
AVG_1.GameRecord.saveRecord();
}
GameModelManager.setFreeState = setFreeState;
function getFreeState() {
let r = AVG_1.GameRecord.globalVariables["free_luckyDraw"];
r = r === Enums_1.FreeState.Cost ? Enums_1.FreeState.Cost : Enums_1.FreeState.Free;
return r;
}
GameModelManager.getFreeState = getFreeState;
function checkLuckyDrawIsFree() {
let ret = false;
let lastFreeTime = getLastFreeTime();
let isNewDay = checkOverdue(lastFreeTime);
let freeState = getFreeState();
if (isNewDay) {
ret = true;
setFreeState(Enums_1.FreeState.Free);
}
else {
ret = freeState === Enums_1.FreeState.Free;
}
return ret;
}
GameModelManager.checkLuckyDrawIsFree = checkLuckyDrawIsFree;
function setLastFreeTime(time) {
let recordKey = "luck_draw_free_time";
AVG_1.GameRecord.globalVariables[recordKey] = time ? time : simba_sdk_1.TimeManager.getTime();
AVG_1.GameRecord.saveRecord();
}
GameModelManager.setLastFreeTime = setLastFreeTime;
function addSkinItemToRecord(itemId) {
let recordKey = "own_skins";
let exist = false;
let recordStr = AVG_1.GameRecord.globalVariables[recordKey];
let skinItemIds = [];
if (recordStr) {
skinItemIds = JSON.parse(recordStr);
exist = skinItemIds.findIndex((v) => v === itemId) !== -1;
}
if (!exist) {
skinItemIds.push(itemId);
AVG_1.GameRecord.globalVariables[recordKey] = JSON.stringify(skinItemIds);
AVG_1.GameRecord.saveRecord();
GameModelManager.RefreshDiscoverTabRed.emit();
}
}
GameModelManager.addSkinItemToRecord = addSkinItemToRecord;
function checkHasOwnedSkin(itemId) {
let recordKey = "own_skins";
let ret = false;
let recordStr = AVG_1.GameRecord.globalVariables[recordKey];
if (recordStr) {
let skinItemIds = [];
skinItemIds = JSON.parse(recordStr);
ret = skinItemIds.findIndex((v) => v === itemId) !== -1;
}
return ret;
}
GameModelManager.checkHasOwnedSkin = checkHasOwnedSkin;
function checkSkinAndGraceCondition(condition) {
let ret = false;
if (condition.groups && condition.groups.length > 0
......@@ -1011,37 +842,10 @@ var GameModelManager;
return level;
}
GameModelManager.getGraceLevelByGraceValue = getGraceLevelByGraceValue;
function checkIsNeedEnterCurDateChapter() {
return isNeedEnterCurDateChapter;
}
GameModelManager.checkIsNeedEnterCurDateChapter = checkIsNeedEnterCurDateChapter;
function setNotNeedEnterCurDateChapter() {
isNeedEnterCurDateChapter = false;
}
GameModelManager.setNotNeedEnterCurDateChapter = setNotNeedEnterCurDateChapter;
function isDiscountAll() {
return false;
}
GameModelManager.isDiscountAll = isDiscountAll;
function stepGetNewPlayerGift(isFirst, time, step) {
let timeRecord = AVG_1.GameRecord.globalVariables["n_p_r_g_s_t"];
timeRecord = timeRecord ? timeRecord : simba_sdk_1.TimeManager.getTime();
time = time ? time : 0;
time = time ? time : timeRecord;
const stepMax = 7;
step = step ? step : 1;
let recordKey = "n_p_r_g_s_p";
let record = AVG_1.GameRecord.globalVariables[recordKey];
record = record ? record : 0;
record += step;
let overTime = checkOverdue(time);
if (record <= stepMax && (overTime || isFirst)) {
AVG_1.GameRecord.globalVariables[recordKey] = record;
AVG_1.GameRecord.globalVariables["n_p_r_g_s_t"] = simba_sdk_1.TimeManager.getTime();
AVG_1.GameRecord.saveRecord();
}
}
GameModelManager.stepGetNewPlayerGift = stepGetNewPlayerGift;
function registerAutoPopView(viewType) {
if (_autoPopView.length === 0) {
_autoPopView.push(viewType);
......@@ -1066,38 +870,6 @@ var GameModelManager;
}
}
GameModelManager.checkAutoPopView = checkAutoPopView;
function checkWelfareNeedGuide() {
let time = AVG_1.GameRecord.globalVariables["sininsevendaydatetime"];
time = time === undefined ? 0 : time;
if (checkOverdue(time)) {
return true;
}
return false;
}
GameModelManager.checkWelfareNeedGuide = checkWelfareNeedGuide;
function markResumeFullEnergy() {
let marked = checkResumeFullEnergyMarked();
if (marked) {
return;
}
let timeKeyStr = "resume_full_energy_time";
AVG_1.GameRecord.globalVariables[timeKeyStr] = simba_sdk_1.TimeManager.getTime();
AVG_1.GameRecord.saveRecord();
}
GameModelManager.markResumeFullEnergy = markResumeFullEnergy;
function checkResumeFullEnergyMarked() {
let mark = false;
let timeKeyStr = "resume_full_energy_time";
let timeRecord = AVG_1.GameRecord.globalVariables[timeKeyStr];
if (timeRecord) {
let over = checkOverdue(timeRecord);
if (!over) {
mark = true;
}
}
return mark;
}
GameModelManager.checkResumeFullEnergyMarked = checkResumeFullEnergyMarked;
function checkIsOverPlotLimitTime() {
let isOver = false;
let timeKeyStr = "plot_limit_time";
......@@ -1137,31 +909,6 @@ var GameModelManager;
return blocked;
}
GameModelManager.checkIsPlotBlocked = checkIsPlotBlocked;
function getCurPlotBlockedId() {
let id = AVG_1.PlotManager.getCurrentPlots()[0].id;
return id;
}
GameModelManager.getCurPlotBlockedId = getCurPlotBlockedId;
function checkIsNeedShowPlotBlocked() {
let show = false;
let curPlot = AVG_1.PlotManager.getCurrentPlots()[0];
if (curPlot && curPlot.plotSceneType === Enums_1.PlotSceneType.BlockPlot) {
let over = checkIsOverPlotLimitTime();
if (!over) {
show = true;
}
}
return show;
}
GameModelManager.checkIsNeedShowPlotBlocked = checkIsNeedShowPlotBlocked;
function isPlotBlockedOrToBeContinued() {
let isPlotBolcked = checkIsPlotBlocked();
let p = AVG_1.PlotManager.getCurrentPlots()[0];
let isToBeContinued = p && p.id === AVG_1.SpecialPlotId.ToBeContinued;
let preConditionFlag = isPlotBolcked || isToBeContinued;
return preConditionFlag;
}
GameModelManager.isPlotBlockedOrToBeContinued = isPlotBlockedOrToBeContinued;
function getCurMainLinePlotId() {
let p = AVG_1.PlotManager.getCurrentPlots()[0];
return p ? p.id : 0;
......@@ -1181,24 +928,6 @@ var GameModelManager;
}
GameModelManager.pushTipAddGracePlot = pushTipAddGracePlot;
/**
* 根据卧室物品Id获取对应的淘宝商品类型
* @param itemId 卧室物品Id
* @returns 返回值为卧室物品对应的淘宝商品类型
*/
function getTypeByBedroomItemId(itemId) {
let type = -1;
let cfg = simba_config_manager_1.ConfigManager.getAllConfig(BedroomItemConfig_1.bedroomItemConfig);
if (cfg) {
for (const id in cfg) {
if (cfg[id].bedroomItemId == itemId) {
type = cfg[id].itemType;
}
}
}
return type;
}
GameModelManager.getTypeByBedroomItemId = getTypeByBedroomItemId;
/**
* 根据商品类型获得该商品对应的淘宝地址链接
* @param type 商品类型
* @returns 返回值为商品类型对应的商品地址
......@@ -1335,44 +1064,6 @@ var GameModelManager;
return autoShow;
}
GameModelManager.getAutoShowNotice = getAutoShowNotice;
/**
* 设置是否自动弹出紧急公告界面
* @param autoShow 是否自动弹出紧急公告界面
*/
function setUrgentNoticeInfo(noticeInfo) {
AVG_1.GameRecord.globalVariables["UrgentNoticeInfo"] = noticeInfo;
AVG_1.GameRecord.saveRecord();
}
GameModelManager.setUrgentNoticeInfo = setUrgentNoticeInfo;
/**
* 获取是否自动弹出紧急公告界面
* @returns 返回值为是否自动弹出紧急公告界面
*/
function getUrgentNoticeInfo() {
let noticeInfo = AVG_1.GameRecord.globalVariables["UrgentNoticeInfo"];
noticeInfo = noticeInfo ? noticeInfo : { readed: false, autoShow: true };
return noticeInfo;
}
GameModelManager.getUrgentNoticeInfo = getUrgentNoticeInfo;
/**
* 设置是否自动弹出紧急公告界面
* @param autoShow 是否自动弹出紧急公告界面
*/
function setNoticeReaded(readed) {
AVG_1.GameRecord.globalVariables["NoticeReaded"] = readed;
AVG_1.GameRecord.saveRecord();
}
GameModelManager.setNoticeReaded = setNoticeReaded;
/**
* 获取是否自动弹出紧急公告界面
* @returns 返回值为是否自动弹出紧急公告界面
*/
function getNoticeReaded() {
let readed = AVG_1.GameRecord.globalVariables["NoticeReaded"];
readed = readed ? readed : false;
return readed;
}
GameModelManager.getNoticeReaded = getNoticeReaded;
})(GameModelManager = exports.GameModelManager || (exports.GameModelManager = {}));
cc._RF.pop();
\ No newline at end of file
......@@ -22,7 +22,6 @@ const GameConstData_1 = require("../../../common/gameplay/gamedata/GameConstData
const UIManager_1 = require("../../../common/gameplay/managers/UIManager");
const DateSceneConfig_1 = require("../../../config/DateSceneConfig");
const Enums_1 = require("../../Enums");
const CDKeyEventManager_1 = require("../../model/CDKeyEventManager");
const DatingEventSceneModel_1 = require("../../model/DatingEventSceneModel");
const GameModelManager_1 = require("../../model/GameModelManager");
const PresenterCCViewFactory_1 = require("../PresenterCCViewFactory");
......@@ -81,38 +80,6 @@ let DatingScenePresenter = /** @class */ (() => {
this._completingPlot = false;
this.execPlot();
};
this.onClickRollBackBtn = (pid) => {
CDKeyEventManager_1.default.getInstance().shiftCDKeyRemovePlotAD();
let removeAdCardNum = CDKeyEventManager_1.default.getInstance().checkCDKeyRemovePlotAD();
let temp = {
dataptr: {},
titlecontent: "此功能不可逆",
content: "使用传送门会清掉此章节到已解锁最新章节之间的剧情存档和剧情内产生的数值,<color=red>且不可逆</color>,确定使用传送门吗?",
ishasad: !(removeAdCardNum > 0),
istwobtn: true,
adconfig: "inject_fruit",
hasBanner: false,
callback: async (type, ret) => {
if (ret) {
let retainVar = this.getRetainVarKeyArr();
await AVG_1.PlotManager.rollbackToPlot(pid, false, retainVar);
this.rollBackDateAdArray(pid);
AVG_1.GameRecord.saveRecord();
this._showScrollView = !this._showScrollView;
this.view.closeView();
await GameModelManager_1.GameModelManager.init((value) => {
});
GameModelManager_1.GameModelManager.setIsChangePlotSceneType(true);
UIManager_1.UIManager.showSceneToast("数据刷新完成");
let isSpecialScene = this._model.id === this._specialDealSceneId;
this._showBackBtn = !(isSpecialScene && this._model.status === DatingEventSceneModel_1.DatingEventStatus.InProgress);
this.view.showBackBtn(this._showBackBtn);
GameModelManager_1.GameModelManager.RefreshAllStatus.emit();
}
}
};
UIManager_1.UIManager.pushPresenter(AlertDialogViewPresenter_1.default, temp);
};
this.onDeadEvent = (pid) => {
if (this._model.status == DatingEventSceneModel_1.DatingEventStatus.Completed) {
let temp = {
......@@ -257,7 +224,6 @@ let DatingScenePresenter = /** @class */ (() => {
bgPath = "textures/background/dating_event/" + bgPath;
return this.view.setBackgroundEffect(bgPath);
}));
this._disposable.add(GameModelManager_1.GameModelManager.RollBackToPlot.on(this.onClickRollBackBtn));
this._showScrollView = false;
this._disposable.add(GameModelManager_1.GameModelManager.DeadEvent.on(this.onDeadEvent));
this._disposable.add(GameModelManager_1.GameModelManager.SpecialToast.on(this.onSpecialToast));
......
{"version":3,"sources":["assets/script/game/ui/presenter/DatingScenePresenter.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import { AudioManager } from \"simba-cc-audio-manager\";\nimport { ConfigManager } from \"simba-config-manager\";\nimport { DeepReadonly, delay } from \"simba-utils\";\nimport { Action, ActionManager, ActionType, GameRecord, Plot, PlotManager, richNodesToCocosString, SentenceType, SpecialPlotId } from \"../../../avg/AVG\";\nimport { DateType, FaceType } from \"../../../avg/EditorEnums\";\nimport { EditorEvents } from \"../../../avg/EditorEvents\";\nimport { Presenter } from \"../../../common/classbase/PresenterBase\";\nimport { GameConstData } from \"../../../common/gameplay/gamedata/GameConstData\";\nimport { UIManager } from \"../../../common/gameplay/managers/UIManager\";\nimport { dateSceneConfig } from \"../../../config/DateSceneConfig\";\nimport { PlotSceneType } from \"../../Enums\";\nimport CDKeyEventManager from \"../../model/CDKeyEventManager\";\nimport { DatingEventSceneModel, DatingEventStatus } from \"../../model/DatingEventSceneModel\";\nimport { GameModelManager } from \"../../model/GameModelManager\";\nimport GameRoleDataModel from \"../../model/GameRoleDataModel\";\nimport { RegPresenter } from \"../PresenterCCViewFactory\";\nimport { SpecialToastType } from \"../SpecialToast\";\nimport VerbView from \"../VerbView\";\nimport { AlertDialogViewProps } from \"../view/type/AlertDialogView\";\nimport { DatingSceneView, DatingSceneViewType } from \"../view/type/DatingSceneView\";\nimport { SentenceSelectorViewProps } from \"../view/type/SentenceSelectorView\";\nimport AlertDialogViewPresenter from \"./AlertDialogViewPresenter\";\nimport ReviewPlotViewPresenter, { ReviewPlotViewParam } from \"./ReviewPlotViewPresenter\";\nimport SentenceSelectorViewPresenter from \"./SentenceSelectorViewPresenter\";\n\ntype DatingPlot = DeepReadonly<Plot & { face: FaceType, portrait?: number, portraitFace?: FaceType }>\n@RegPresenter(DatingSceneViewType)\nexport class DatingScenePresenter extends Presenter<DatingEventSceneModel, DatingSceneView> {\n static uuid = \"DatingScenePresenter\";\n private _currPlot?: DatingPlot;\n private _executingPlot = false;\n private _completingPlot = false;\n private _showScrollView = false;\n\n /**是否时回忆 */\n private _isReview = false;\n private _model: DatingEventSceneModel;\n // private _actionFilter?: (action: DeepReadonly<Action>) => boolean;\n private _plotBranch = 0;\n /**出现选择时记录当前选择的id*/\n private _currSelect?: number = undefined;\n /**本次约会剧情是否结束 */\n private _finished = false;\n //dating scene which id is 1, need to deal by specially;\n private _specialDealSceneId: number = 1;\n\n private _isDotTutorial: boolean = false;\n private _showBackBtn: boolean = true;\n private _reviewPlot: string = \"\";\n\n onOpen(param: DatingEventSceneModel) {\n super.onOpen(param);\n this._finished = false;\n this._isDotTutorial = false;\n this._reviewPlot = \"\";\n this.view.completePlotCallback = this.completePlot;\n this.view.onReviewButtonClickCallback = this.onReviewButtonClickCallback;\n this._model = param;\n if (this._model.status === DatingEventStatus.New) {\n this._model.status = DatingEventStatus.InProgress;\n }\n let isSpecialScene: boolean = this._model.id === this._specialDealSceneId;\n // deal special :hide backBtn\n this._showBackBtn = !(isSpecialScene && this._model.status === DatingEventStatus.InProgress);\n this.view.showBackBtn(this._showBackBtn);\n // this.view.setRunCloseAction((isSpecialScene && this._model.status !== DatingEventStatus.Completed));\n if (this._model.isExtra) {\n GameModelManager.setIsMainPlotSceneType(false);\n } else {\n GameModelManager.setIsMainPlotSceneType(true);\n }\n delay(0.1).then(async () => {\n if (param.status === DatingEventStatus.Completed) {\n this._isReview = true;\n // this._actionFilter = (action) => {\n // return action.type !== ActionType.ModifyVariable;\n // }\n this._model.background = \"\";\n this._currPlot = this._model.firstPlot as DatingPlot;\n\n } else {\n this._isReview = false;\n if (this._model.isExtra) {\n GameModelManager.setBranchInProgress(this._model.id);\n }\n let plots = PlotManager.getCurrentPlots();\n this._plotBranch = plots.findIndex(v => v.plotSceneType === PlotSceneType.DatingEvent && v.plotSceneTypeId === param.id);\n this._isDotTutorial = GameModelManager.checkIsDotTutorial() && this._plotBranch === 0;\n this._currPlot = plots[this._plotBranch] as DatingPlot;\n if (this._currPlot.id === this._model.firstPlot.id) {\n GameRecord.recordVariables.bgm = \"\"; // 新约会,不继承之前剧情的背景音乐存档\n this._model.background = \"\";\n }\n this._currSelect = PlotManager.getPlotSelection(this._currPlot.id);\n // if(!this._currSelect) this._currSelect = 0;\n if (GameRecord.recordVariables.bgm) {\n AudioManager.playMusic(GameRecord.recordVariables.bgm);\n }\n\n //dot main plot start\n if (0 === this._plotBranch && this._currPlot && this._currPlot.id === this._model.firstPlot.id) {\n GameModelManager.dotMainLinePlotStart();\n }\n }\n if (this._model.background) {\n await this.view.setBackground(\"textures/background/dating_event/\" + this._model.background);\n }\n this.execPlot();\n });\n\n this._disposable.add(EditorEvents.SET_DATING_BG.on((bgPath) => {\n this._model.background = bgPath;\n if (bgPath) bgPath = \"textures/background/dating_event/\" + bgPath;\n return this.view.setBackground(bgPath);\n }));\n this._disposable.add(EditorEvents.SET_DATING_BG_EFFECT.on((bgPath) => {\n this._model.background = bgPath;\n if (bgPath) bgPath = \"textures/background/dating_event/\" + bgPath;\n return this.view.setBackgroundEffect(bgPath);\n }));\n this._disposable.add(GameModelManager.RollBackToPlot.on(this.onClickRollBackBtn));\n this._showScrollView = false;\n this._disposable.add(GameModelManager.DeadEvent.on(this.onDeadEvent));\n this._disposable.add(GameModelManager.SpecialToast.on(this.onSpecialToast));\n }\n\n onClose() {\n super.onClose();\n this._currPlot = undefined;\n AudioManager.stopMusic();\n // UIManager.popToPresenter(this);\n if (!this._model.isExtra) {\n GameModelManager.CloseDatingSceneView.emit(this._model.id);\n }\n }\n\n async execPlot() {\n if (this._currPlot) {\n if (this._currPlot.sentences && this._currPlot.plotSceneType === PlotSceneType.DatingEvent && this._currPlot.plotSceneTypeId === this._model.id) {\n this._executingPlot = true;\n const sentence = this._currPlot.sentences[0];\n const content = sentence.content;\n const roleData = GameModelManager.getRoleData(sentence.roleId)!;\n let otherPortrait: string | undefined = undefined;\n let isShowRouge: boolean = this.checkIsShowRouge(this._currPlot.id);\n if (this._currPlot.portrait !== undefined) {\n let otherRole = GameModelManager.getRoleData(this._currPlot.portrait);\n if (otherRole) {\n // otherPortrait = otherRole.getPortrait(this._currPlot.portraitFace);\n otherPortrait = this.getPortraitByRole(otherRole, this._currPlot.portraitFace);\n }\n }\n if (content) { // TODO 图片设置\n if (content.type === SentenceType.TEXT) {\n this.view.showBackBtn(this._showBackBtn);\n await this.view.setContent(sentence.roleId === GameConstData.GAME_CONST_PLAYER_ROLE_VALUE,\n richNodesToCocosString(content.value),\n sentence.roleId === 1 ? \"\" : roleData.getNameIcon(),\n sentence.roleId === 1 ? undefined : roleData.getConfig().name,\n // sentence.roleId === 1 ? otherPortrait : roleData.getPortrait(this._currPlot.face,),\n sentence.roleId === 1 ? otherPortrait : this.getPortraitByRole(roleData, this._currPlot.face),\n otherPortrait, isShowRouge);\n let plotName = \"<color=#EFDA91>\" + (sentence.roleId === 1 ? \"旁白\" : roleData.getConfig().name) + \":</c>\\n\";\n let plotContent = richNodesToCocosString(content.value) + \"\\n\";\n if (this._isReview) {\n this._reviewPlot = this._reviewPlot + plotName;\n this._reviewPlot = this._reviewPlot + plotContent;\n }\n } else if (content.type === SentenceType.SELECT) {\n this.view.showBackBtn(false);\n let setSelection = async () => {\n let value = content.value[this._currSelect!];\n let str = value.summary;\n this._reviewPlot = this._reviewPlot + \"<color=#D36777>\" + \"选项\" + \":</c>\\n\";\n if (value.content && value.content.type === SentenceType.EMPTY) { // 空类型,不做展示\n await this.completePlot();\n if (this._isReview) {\n this._reviewPlot = this._reviewPlot + str + \"\\n\";\n }\n return;\n } else if (value.content && value.content.type === SentenceType.TEXT) {\n str = richNodesToCocosString(value.content.value);\n if (this._isReview) {\n this._reviewPlot = this._reviewPlot + str + \"\\n\";\n this._reviewPlot = this._reviewPlot + \"<color=#EFDA91>\" + \"梵优\" + \":</c>\\n\";\n this._reviewPlot = this._reviewPlot + str + \"\\n\";\n }\n } else {\n if (this._isReview) {\n this._reviewPlot = this._reviewPlot + str + \"\\n\";\n this._reviewPlot = this._reviewPlot + \"<color=#EFDA91>\" + \"梵优\" + \":</c>\\n\";\n this._reviewPlot = this._reviewPlot + str + \"\\n\";\n }\n }\n // await this.view.setContent(true, str, roleData.getConfig().name, roleData.getPortrait(this._currPlot!.face), otherPortrait, isShowRouge);\n await this.view.setContent(true, str, roleData.getNameIcon(), roleData.getConfig().name, this.getPortraitByRole(roleData, this._currPlot!.face), otherPortrait, isShowRouge);\n }\n if (this._currSelect === undefined || this._currSelect === null) {\n let props: SentenceSelectorViewProps =\n {\n sentence: content,\n backgroundpath: \"\",\n clickcausehide: false,\n isFromDate: true,\n y: -250,\n dateSceneId: this._model.id,\n plotId: this._currPlot.id,\n onSelectIndexCallback: (index: number) => { this._currSelect = index; setSelection(); }\n };\n UIManager.pushPresenter(SentenceSelectorViewPresenter, props);\n // await this.view.setContent(true, \"\", roleData.getConfig().name, roleData.getPortrait(this._currPlot!.face), otherPortrait, isShowRouge);\n await this.view.setContent(true, \"\", roleData.getNameIcon(), roleData.getConfig().name, this.getPortraitByRole(roleData, this._currPlot!.face), otherPortrait, isShowRouge);\n \n } else {\n await setSelection();\n }\n } else {\n console.error(\"不支持的约会剧情\", content);\n }\n } else { // 没有句子,只设置其立绘、背景等\n // await this.view.setContent(false, \"\", \"\", roleData.getPortrait(this._currPlot!.face), otherPortrait, isShowRouge);\n await this.view.setContent(false, \"\", \"\", \"\", this.getPortraitByRole(roleData, this._currPlot!.face), otherPortrait, isShowRouge);\n }\n if (this._currPlot.sentences[0].actions.actions.length) {\n await ActionManager.executeActions(this._currPlot.sentences[0].actions, this.filterFunc, !this._isReview);\n }\n this._executingPlot = false;\n } else {\n // 本次约会剧情结束\n this._model.status = DatingEventStatus.Completed;\n this._finished = true;\n this.view.setIsRunningAction(false);\n this.view.showBackBtn(this._showBackBtn);\n let Plot = PlotManager.getCurrentPlots()[0];\n let isToBeContinued = Plot.id == SpecialPlotId.ToBeContinued;\n let isEnd = Plot.id == SpecialPlotId.End;\n if ((this._isReview || isToBeContinued || isEnd) && !this._model.isExtra) {\n let nextKey = this.getNextDatingEventKey();\n let nextEventModel = GameModelManager.getMainDatingEventSceneModel(nextKey);\n if (nextEventModel) {\n if (nextEventModel.status == DatingEventStatus.Completed) {\n this.view.closeView();\n let comp = cc.director.getScene().getChildByName(\"Canvas\").getChildByName(\"VerbRoot\").getChildByName(\"VerbView\").getComponent(VerbView);\n // let cfgs = ConfigManager.getAllConfig(dateSceneConfig);\n // let ids: string[] = [];\n // for (const id in cfgs) {\n // if (cfgs[id].DateType == DateType.Date_Normal) {\n // ids.push(id);\n // }\n // }\n // let index = ids.indexOf(nextKey.toString());\n let plotIds: number[] = [];\n let models = GameModelManager.getMainDatingEventScenesModel();\n for (let i = 0; i < models.length; i++) {\n plotIds.push(models[i].id);\n }\n let index = plotIds.indexOf(nextEventModel.id);\n let title = \"第\" + (index + 1) + \"章:\";\n let cfg = ConfigManager.getConfig(dateSceneConfig, Number(nextKey));\n let desc = cfg && cfg.name ? GameModelManager.getConfigLanguageTxt(cfg.name) : \"\";\n comp.toDating(() => {\n AudioManager.playEffect('verb');\n GameModelManager.ForceClickDataReady.emit();\n GameModelManager.ForceClickDatingItem.emit(Number(nextKey));\n }, { title: title, desc: desc })\n } else {\n this.view.guideBack();\n if (this._model.isExtra) {\n GameModelManager.setBranchComplete(this._model.id);\n }\n }\n } else {\n if (this._model.isExtra) {\n GameModelManager.setBranchComplete(this._model.id);\n }\n this.view.guideBack();\n console.log(\"The nextEventModel is undefined.\");\n }\n } else if (this._model.isExtra) {\n this.view.guideBack();\n GameModelManager.setBranchComplete(this._model.id);\n console.log(\"Curr Chapter is extra plot.\");\n } else {\n GameModelManager.dotMainLinePlotEnd();\n }\n }\n } else if (this._model.isExtra) {\n this.view.guideBack();\n GameModelManager.setBranchComplete(this._model.id);\n console.log(\"Curr Chapter is extra plot.\");\n }\n }\n\n /**完成当前剧情回调 */\n completePlot = async () => {\n if (this._executingPlot || this._completingPlot || !this._currPlot || this._finished) return;\n let content = this._currPlot.sentences[0].content;\n if (content && content.type === SentenceType.SELECT && this._currSelect === undefined) return;\n this._completingPlot = true;\n // GameModelManager.pushDateSceneKeyPlot(this._model.id, this._currPlot.id);\n if (this._model.isExtra) {\n GameModelManager.setIsMainPlotSceneType(false);\n } else {\n GameModelManager.setIsMainPlotSceneType(true);\n }\n if (this._isReview) {\n let nextPlot = await PlotManager.getNextPlot(this._currPlot, this._currSelect);\n if (nextPlot) {\n this._currPlot = nextPlot as DatingPlot;\n }\n } else {\n this._model.status = DatingEventStatus.InProgress;\n let nextPlots = await PlotManager.completePlot(this._currPlot, this._currSelect);\n this._currPlot = nextPlots[this._plotBranch] as DatingPlot;\n }\n this._currSelect = undefined;\n this._completingPlot = false;\n this.execPlot();\n }\n\n checkIsShowRouge(plotId: number): boolean {\n let pStart: number = 1202;\n let pEnd: number = 1229;\n let ret: boolean = plotId >= pStart && plotId <= pEnd;\n // console.log(\"剧情id = \" + plotId + \" 是否展示口红: = \", ret);\n return ret;\n }\n\n getPortraitByRole(role: GameRoleDataModel, face = FaceType.Normal, skin?: number): string {\n let portrait: string = \"\";\n let curSkin = role.getCurSkin();\n if (skin === undefined && curSkin > 0) {\n skin = curSkin;\n }\n portrait = \"textures/portrait/\" + role.getConfig().id + \"/\" + (skin !== undefined ? skin + \"/\" : \"\") + face;\n if (this._model.id === 1) {\n portrait = \"textures/portrait/\" + role.getConfig().id + \"/\" + face;\n }\n return portrait;\n }\n\n onClickRollBackBtn = (pid: number) => {\n CDKeyEventManager.getInstance().shiftCDKeyRemovePlotAD();\n let removeAdCardNum: number = CDKeyEventManager.getInstance().checkCDKeyRemovePlotAD();\n let temp: AlertDialogViewProps =\n {\n dataptr: {},\n titlecontent: \"此功能不可逆\",\n content: \"使用传送门会清掉此章节到已解锁最新章节之间的剧情存档和剧情内产生的数值,<color=red>且不可逆</color>,确定使用传送门吗?\",\n ishasad: !(removeAdCardNum > 0),\n istwobtn: true,\n adconfig: \"inject_fruit\",\n hasBanner: false,\n callback: async (type, ret) => {\n if (ret) {\n let retainVar = this.getRetainVarKeyArr();\n await PlotManager.rollbackToPlot(pid, false, retainVar);\n this.rollBackDateAdArray(pid);\n GameRecord.saveRecord();\n this._showScrollView = !this._showScrollView;\n this.view.closeView();\n await GameModelManager.init((value: number) => {\n });\n GameModelManager.setIsChangePlotSceneType(true);\n UIManager.showSceneToast(\"数据刷新完成\");\n let isSpecialScene: boolean = this._model.id === this._specialDealSceneId;\n this._showBackBtn = !(isSpecialScene && this._model.status === DatingEventStatus.InProgress);\n this.view.showBackBtn(this._showBackBtn);\n GameModelManager.RefreshAllStatus.emit();\n }\n }\n };\n UIManager.pushPresenter(AlertDialogViewPresenter, temp);\n }\n\n getRetainVarKeyArr(): string[] {\n let keyArr: string[] = [];\n let branches = GameModelManager.getAllStartedBranches();\n let branchMap = this.getBranchFirstPlotIdMap();\n for (let i = 0; i < branches.length; i++) {\n let startPlotId = branches[i].startPlot;\n let extraId = branchMap[startPlotId + \"\"];\n if (extraId) {\n let recordKey = \"de\" + extraId;\n let f = recordKey + \".f\";\n let s = recordKey + \".s\";\n let b = recordKey + \".bg\";\n if (GameRecord.recordVariables[f]) {\n keyArr.push(f);\n }\n if (GameRecord.recordVariables[s]) {\n keyArr.push(s);\n }\n if (GameRecord.recordVariables[b]) {\n keyArr.push(b);\n }\n }\n }\n return keyArr;\n }\n\n getBranchFirstPlotIdMap(): { [key: string]: number } {\n let map: { [key: string]: number } = {};\n let tbl = ConfigManager.getAllConfig(dateSceneConfig);\n if (tbl) {\n for (let id in tbl) {\n let c = tbl[id];\n if (c && c.DateType == DateType.Date_Sp) {\n map[c.start_plot_id + \"\"] = c.id;\n }\n }\n }\n return map;\n }\n\n onDeadEvent = (pid: number) => {\n if (this._model.status == DatingEventStatus.Completed) {\n let temp: AlertDialogViewProps = {\n dataptr: {},\n titlecontent: \"提示\",\n content: \"触发了死亡结局,但因为是在回忆模式,所以章节不会被重置\",\n ishasad: false,\n istwobtn: false,\n adconfig: \"\",\n hasBanner: false,\n callback: async (type, ret) => {\n if (ret) {\n this.view.closeView();\n }\n }\n };\n UIManager.pushPresenter(AlertDialogViewPresenter, temp);\n } else {\n let temp: AlertDialogViewProps = {\n dataptr: {},\n titlecontent: \"提示\",\n content: \"触发了死亡结局,本章节将<color=red>重置</color>!!\",\n ishasad: false,\n istwobtn: false,\n adconfig: \"\",\n hasBanner: false,\n callback: async (type, ret) => {\n if (ret) {\n let retainVar = this.getRetainVarKeyArr();\n await PlotManager.rollbackToPlot(pid, false, retainVar);\n this.rollBackDateAdArray(pid);\n GameRecord.saveRecord();\n this._showScrollView = !this._showScrollView;\n this.view.closeView();\n await GameModelManager.init((value: number) => {\n });\n GameModelManager.setIsChangePlotSceneType(true);\n UIManager.showSceneToast(\"数据刷新完成\");\n let isSpecialScene: boolean = this._model.id === this._specialDealSceneId;\n this._showBackBtn = !(isSpecialScene && this._model.status === DatingEventStatus.InProgress);\n this.view.showBackBtn(this._showBackBtn);\n GameModelManager.RefreshAllStatus.emit();\n }\n }\n };\n UIManager.pushPresenter(AlertDialogViewPresenter, temp);\n }\n }\n\n private filterFunc = (action: DeepReadonly<Action>): boolean => {\n let isExcute: boolean = true;\n if (action.type === ActionType.ModifyVariable) {\n isExcute = !GameModelManager.checkPlotTipAddGraceAlready(this._currPlot?.id as number);\n if (isExcute) {\n GameModelManager.pushTipAddGracePlot(this._currPlot?.id as number);\n }\n\n }\n return isExcute;\n }\n\n rollBackDateAdArray(pid: number) {\n let models = GameModelManager.getMainDatingEventScenesModel();\n let chapterId = -1;\n for (let i = 0; i < models.length; i++) {\n if (pid == models[i].config.start_plot_id) {\n chapterId = models[i].config.id;\n }\n }\n if (chapterId == -1) {\n console.error(\"Cannot found the chapterId.\");\n }\n let record = GameRecord.globalVariables[\"date_ad_arr\"] as string;\n let a: number[] = [];\n if (record) {\n a = JSON.parse(record);\n a.sort((a, b) => {\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n }\n return 0;\n });\n for (let i = 0; i < a.length; i++) {\n if (a[i] >= chapterId) {\n a.splice(i, a.length - (i - 1));\n GameRecord.globalVariables[\"date_ad_arr\"] = JSON.stringify(a);\n return;\n }\n }\n }\n }\n\n getNextDatingEventKey(): number {\n let nextKey: number = 0;\n let currEventId = this._model.id;\n let plotIds: number[] = [];\n let models = GameModelManager.getMainDatingEventScenesModel();\n for (let i = 0; i < models.length; i++) {\n plotIds.push(models[i].id);\n }\n for (let i = 0; i < plotIds.length; i++) {\n if (plotIds[i] == currEventId) {\n nextKey = plotIds[i + 1];\n }\n }\n console.log(\"getNextDatingEventModel\", nextKey);\n return nextKey;\n }\n\n onReviewButtonClickCallback = async () => {\n let temp: ReviewPlotViewParam = {\n isReview: this._isReview,\n plotString: this._reviewPlot,\n startPlotId: this._model.config.start_plot_id,\n currentPlotId: this._currPlot!.id,\n };\n UIManager.pushPresenter(ReviewPlotViewPresenter, temp);\n }\n\n onSpecialToast = (type: SpecialToastType) => {\n UIManager.showSpecialToast(type);\n }\n}"]}
\ No newline at end of file
{"version":3,"sources":["assets/script/game/ui/presenter/DatingScenePresenter.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import { AudioManager } from \"simba-cc-audio-manager\";\nimport { ConfigManager } from \"simba-config-manager\";\nimport { DeepReadonly, delay } from \"simba-utils\";\nimport { Action, ActionManager, ActionType, GameRecord, Plot, PlotManager, richNodesToCocosString, SentenceType, SpecialPlotId } from \"../../../avg/AVG\";\nimport { DateType, FaceType } from \"../../../avg/EditorEnums\";\nimport { EditorEvents } from \"../../../avg/EditorEvents\";\nimport { Presenter } from \"../../../common/classbase/PresenterBase\";\nimport { GameConstData } from \"../../../common/gameplay/gamedata/GameConstData\";\nimport { UIManager } from \"../../../common/gameplay/managers/UIManager\";\nimport { dateSceneConfig } from \"../../../config/DateSceneConfig\";\nimport { PlotSceneType } from \"../../Enums\";\nimport CDKeyEventManager from \"../../model/CDKeyEventManager\";\nimport { DatingEventSceneModel, DatingEventStatus } from \"../../model/DatingEventSceneModel\";\nimport { GameModelManager } from \"../../model/GameModelManager\";\nimport GameRoleDataModel from \"../../model/GameRoleDataModel\";\nimport { RegPresenter } from \"../PresenterCCViewFactory\";\nimport { SpecialToastType } from \"../SpecialToast\";\nimport VerbView from \"../VerbView\";\nimport { AlertDialogViewProps } from \"../view/type/AlertDialogView\";\nimport { DatingSceneView, DatingSceneViewType } from \"../view/type/DatingSceneView\";\nimport { SentenceSelectorViewProps } from \"../view/type/SentenceSelectorView\";\nimport AlertDialogViewPresenter from \"./AlertDialogViewPresenter\";\nimport ReviewPlotViewPresenter, { ReviewPlotViewParam } from \"./ReviewPlotViewPresenter\";\nimport SentenceSelectorViewPresenter from \"./SentenceSelectorViewPresenter\";\n\ntype DatingPlot = DeepReadonly<Plot & { face: FaceType, portrait?: number, portraitFace?: FaceType }>\n@RegPresenter(DatingSceneViewType)\nexport class DatingScenePresenter extends Presenter<DatingEventSceneModel, DatingSceneView> {\n static uuid = \"DatingScenePresenter\";\n private _currPlot?: DatingPlot;\n private _executingPlot = false;\n private _completingPlot = false;\n private _showScrollView = false;\n\n /**是否时回忆 */\n private _isReview = false;\n private _model: DatingEventSceneModel;\n // private _actionFilter?: (action: DeepReadonly<Action>) => boolean;\n private _plotBranch = 0;\n /**出现选择时记录当前选择的id*/\n private _currSelect?: number = undefined;\n /**本次约会剧情是否结束 */\n private _finished = false;\n //dating scene which id is 1, need to deal by specially;\n private _specialDealSceneId: number = 1;\n\n private _isDotTutorial: boolean = false;\n private _showBackBtn: boolean = true;\n private _reviewPlot: string = \"\";\n\n onOpen(param: DatingEventSceneModel) {\n super.onOpen(param);\n this._finished = false;\n this._isDotTutorial = false;\n this._reviewPlot = \"\";\n this.view.completePlotCallback = this.completePlot;\n this.view.onReviewButtonClickCallback = this.onReviewButtonClickCallback;\n this._model = param;\n if (this._model.status === DatingEventStatus.New) {\n this._model.status = DatingEventStatus.InProgress;\n }\n let isSpecialScene: boolean = this._model.id === this._specialDealSceneId;\n // deal special :hide backBtn\n this._showBackBtn = !(isSpecialScene && this._model.status === DatingEventStatus.InProgress);\n this.view.showBackBtn(this._showBackBtn);\n // this.view.setRunCloseAction((isSpecialScene && this._model.status !== DatingEventStatus.Completed));\n if (this._model.isExtra) {\n GameModelManager.setIsMainPlotSceneType(false);\n } else {\n GameModelManager.setIsMainPlotSceneType(true);\n }\n delay(0.1).then(async () => {\n if (param.status === DatingEventStatus.Completed) {\n this._isReview = true;\n // this._actionFilter = (action) => {\n // return action.type !== ActionType.ModifyVariable;\n // }\n this._model.background = \"\";\n this._currPlot = this._model.firstPlot as DatingPlot;\n\n } else {\n this._isReview = false;\n if (this._model.isExtra) {\n GameModelManager.setBranchInProgress(this._model.id);\n }\n let plots = PlotManager.getCurrentPlots();\n this._plotBranch = plots.findIndex(v => v.plotSceneType === PlotSceneType.DatingEvent && v.plotSceneTypeId === param.id);\n this._isDotTutorial = GameModelManager.checkIsDotTutorial() && this._plotBranch === 0;\n this._currPlot = plots[this._plotBranch] as DatingPlot;\n if (this._currPlot.id === this._model.firstPlot.id) {\n GameRecord.recordVariables.bgm = \"\"; // 新约会,不继承之前剧情的背景音乐存档\n this._model.background = \"\";\n }\n this._currSelect = PlotManager.getPlotSelection(this._currPlot.id);\n // if(!this._currSelect) this._currSelect = 0;\n if (GameRecord.recordVariables.bgm) {\n AudioManager.playMusic(GameRecord.recordVariables.bgm);\n }\n\n //dot main plot start\n if (0 === this._plotBranch && this._currPlot && this._currPlot.id === this._model.firstPlot.id) {\n GameModelManager.dotMainLinePlotStart();\n }\n }\n if (this._model.background) {\n await this.view.setBackground(\"textures/background/dating_event/\" + this._model.background);\n }\n this.execPlot();\n });\n\n this._disposable.add(EditorEvents.SET_DATING_BG.on((bgPath) => {\n this._model.background = bgPath;\n if (bgPath) bgPath = \"textures/background/dating_event/\" + bgPath;\n return this.view.setBackground(bgPath);\n }));\n this._disposable.add(EditorEvents.SET_DATING_BG_EFFECT.on((bgPath) => {\n this._model.background = bgPath;\n if (bgPath) bgPath = \"textures/background/dating_event/\" + bgPath;\n return this.view.setBackgroundEffect(bgPath);\n }));\n this._showScrollView = false;\n this._disposable.add(GameModelManager.DeadEvent.on(this.onDeadEvent));\n this._disposable.add(GameModelManager.SpecialToast.on(this.onSpecialToast));\n }\n\n onClose() {\n super.onClose();\n this._currPlot = undefined;\n AudioManager.stopMusic();\n // UIManager.popToPresenter(this);\n if (!this._model.isExtra) {\n GameModelManager.CloseDatingSceneView.emit(this._model.id);\n }\n }\n\n async execPlot() {\n if (this._currPlot) {\n if (this._currPlot.sentences && this._currPlot.plotSceneType === PlotSceneType.DatingEvent && this._currPlot.plotSceneTypeId === this._model.id) {\n this._executingPlot = true;\n const sentence = this._currPlot.sentences[0];\n const content = sentence.content;\n const roleData = GameModelManager.getRoleData(sentence.roleId)!;\n let otherPortrait: string | undefined = undefined;\n let isShowRouge: boolean = this.checkIsShowRouge(this._currPlot.id);\n if (this._currPlot.portrait !== undefined) {\n let otherRole = GameModelManager.getRoleData(this._currPlot.portrait);\n if (otherRole) {\n // otherPortrait = otherRole.getPortrait(this._currPlot.portraitFace);\n otherPortrait = this.getPortraitByRole(otherRole, this._currPlot.portraitFace);\n }\n }\n if (content) { // TODO 图片设置\n if (content.type === SentenceType.TEXT) {\n this.view.showBackBtn(this._showBackBtn);\n await this.view.setContent(sentence.roleId === GameConstData.GAME_CONST_PLAYER_ROLE_VALUE,\n richNodesToCocosString(content.value),\n sentence.roleId === 1 ? \"\" : roleData.getNameIcon(),\n sentence.roleId === 1 ? undefined : roleData.getConfig().name,\n // sentence.roleId === 1 ? otherPortrait : roleData.getPortrait(this._currPlot.face,),\n sentence.roleId === 1 ? otherPortrait : this.getPortraitByRole(roleData, this._currPlot.face),\n otherPortrait, isShowRouge);\n let plotName = \"<color=#EFDA91>\" + (sentence.roleId === 1 ? \"旁白\" : roleData.getConfig().name) + \":</c>\\n\";\n let plotContent = richNodesToCocosString(content.value) + \"\\n\";\n if (this._isReview) {\n this._reviewPlot = this._reviewPlot + plotName;\n this._reviewPlot = this._reviewPlot + plotContent;\n }\n } else if (content.type === SentenceType.SELECT) {\n this.view.showBackBtn(false);\n let setSelection = async () => {\n let value = content.value[this._currSelect!];\n let str = value.summary;\n this._reviewPlot = this._reviewPlot + \"<color=#D36777>\" + \"选项\" + \":</c>\\n\";\n if (value.content && value.content.type === SentenceType.EMPTY) { // 空类型,不做展示\n await this.completePlot();\n if (this._isReview) {\n this._reviewPlot = this._reviewPlot + str + \"\\n\";\n }\n return;\n } else if (value.content && value.content.type === SentenceType.TEXT) {\n str = richNodesToCocosString(value.content.value);\n if (this._isReview) {\n this._reviewPlot = this._reviewPlot + str + \"\\n\";\n this._reviewPlot = this._reviewPlot + \"<color=#EFDA91>\" + \"梵优\" + \":</c>\\n\";\n this._reviewPlot = this._reviewPlot + str + \"\\n\";\n }\n } else {\n if (this._isReview) {\n this._reviewPlot = this._reviewPlot + str + \"\\n\";\n this._reviewPlot = this._reviewPlot + \"<color=#EFDA91>\" + \"梵优\" + \":</c>\\n\";\n this._reviewPlot = this._reviewPlot + str + \"\\n\";\n }\n }\n // await this.view.setContent(true, str, roleData.getConfig().name, roleData.getPortrait(this._currPlot!.face), otherPortrait, isShowRouge);\n await this.view.setContent(true, str, roleData.getNameIcon(), roleData.getConfig().name, this.getPortraitByRole(roleData, this._currPlot!.face), otherPortrait, isShowRouge);\n }\n if (this._currSelect === undefined || this._currSelect === null) {\n let props: SentenceSelectorViewProps =\n {\n sentence: content,\n backgroundpath: \"\",\n clickcausehide: false,\n isFromDate: true,\n y: -250,\n dateSceneId: this._model.id,\n plotId: this._currPlot.id,\n onSelectIndexCallback: (index: number) => { this._currSelect = index; setSelection(); }\n };\n UIManager.pushPresenter(SentenceSelectorViewPresenter, props);\n // await this.view.setContent(true, \"\", roleData.getConfig().name, roleData.getPortrait(this._currPlot!.face), otherPortrait, isShowRouge);\n await this.view.setContent(true, \"\", roleData.getNameIcon(), roleData.getConfig().name, this.getPortraitByRole(roleData, this._currPlot!.face), otherPortrait, isShowRouge);\n \n } else {\n await setSelection();\n }\n } else {\n console.error(\"不支持的约会剧情\", content);\n }\n } else { // 没有句子,只设置其立绘、背景等\n // await this.view.setContent(false, \"\", \"\", roleData.getPortrait(this._currPlot!.face), otherPortrait, isShowRouge);\n await this.view.setContent(false, \"\", \"\", \"\", this.getPortraitByRole(roleData, this._currPlot!.face), otherPortrait, isShowRouge);\n }\n if (this._currPlot.sentences[0].actions.actions.length) {\n await ActionManager.executeActions(this._currPlot.sentences[0].actions, this.filterFunc, !this._isReview);\n }\n this._executingPlot = false;\n } else {\n // 本次约会剧情结束\n this._model.status = DatingEventStatus.Completed;\n this._finished = true;\n this.view.setIsRunningAction(false);\n this.view.showBackBtn(this._showBackBtn);\n let Plot = PlotManager.getCurrentPlots()[0];\n let isToBeContinued = Plot.id == SpecialPlotId.ToBeContinued;\n let isEnd = Plot.id == SpecialPlotId.End;\n if ((this._isReview || isToBeContinued || isEnd) && !this._model.isExtra) {\n let nextKey = this.getNextDatingEventKey();\n let nextEventModel = GameModelManager.getMainDatingEventSceneModel(nextKey);\n if (nextEventModel) {\n if (nextEventModel.status == DatingEventStatus.Completed) {\n this.view.closeView();\n let comp = cc.director.getScene().getChildByName(\"Canvas\").getChildByName(\"VerbRoot\").getChildByName(\"VerbView\").getComponent(VerbView);\n // let cfgs = ConfigManager.getAllConfig(dateSceneConfig);\n // let ids: string[] = [];\n // for (const id in cfgs) {\n // if (cfgs[id].DateType == DateType.Date_Normal) {\n // ids.push(id);\n // }\n // }\n // let index = ids.indexOf(nextKey.toString());\n let plotIds: number[] = [];\n let models = GameModelManager.getMainDatingEventScenesModel();\n for (let i = 0; i < models.length; i++) {\n plotIds.push(models[i].id);\n }\n let index = plotIds.indexOf(nextEventModel.id);\n let title = \"第\" + (index + 1) + \"章:\";\n let cfg = ConfigManager.getConfig(dateSceneConfig, Number(nextKey));\n let desc = cfg && cfg.name ? GameModelManager.getConfigLanguageTxt(cfg.name) : \"\";\n comp.toDating(() => {\n AudioManager.playEffect('verb');\n GameModelManager.ForceClickDataReady.emit();\n GameModelManager.ForceClickDatingItem.emit(Number(nextKey));\n }, { title: title, desc: desc })\n } else {\n this.view.guideBack();\n if (this._model.isExtra) {\n GameModelManager.setBranchComplete(this._model.id);\n }\n }\n } else {\n if (this._model.isExtra) {\n GameModelManager.setBranchComplete(this._model.id);\n }\n this.view.guideBack();\n console.log(\"The nextEventModel is undefined.\");\n }\n } else if (this._model.isExtra) {\n this.view.guideBack();\n GameModelManager.setBranchComplete(this._model.id);\n console.log(\"Curr Chapter is extra plot.\");\n } else {\n GameModelManager.dotMainLinePlotEnd();\n }\n }\n } else if (this._model.isExtra) {\n this.view.guideBack();\n GameModelManager.setBranchComplete(this._model.id);\n console.log(\"Curr Chapter is extra plot.\");\n }\n }\n\n /**完成当前剧情回调 */\n completePlot = async () => {\n if (this._executingPlot || this._completingPlot || !this._currPlot || this._finished) return;\n let content = this._currPlot.sentences[0].content;\n if (content && content.type === SentenceType.SELECT && this._currSelect === undefined) return;\n this._completingPlot = true;\n // GameModelManager.pushDateSceneKeyPlot(this._model.id, this._currPlot.id);\n if (this._model.isExtra) {\n GameModelManager.setIsMainPlotSceneType(false);\n } else {\n GameModelManager.setIsMainPlotSceneType(true);\n }\n if (this._isReview) {\n let nextPlot = await PlotManager.getNextPlot(this._currPlot, this._currSelect);\n if (nextPlot) {\n this._currPlot = nextPlot as DatingPlot;\n }\n } else {\n this._model.status = DatingEventStatus.InProgress;\n let nextPlots = await PlotManager.completePlot(this._currPlot, this._currSelect);\n this._currPlot = nextPlots[this._plotBranch] as DatingPlot;\n }\n this._currSelect = undefined;\n this._completingPlot = false;\n this.execPlot();\n }\n\n checkIsShowRouge(plotId: number): boolean {\n let pStart: number = 1202;\n let pEnd: number = 1229;\n let ret: boolean = plotId >= pStart && plotId <= pEnd;\n // console.log(\"剧情id = \" + plotId + \" 是否展示口红: = \", ret);\n return ret;\n }\n\n getPortraitByRole(role: GameRoleDataModel, face = FaceType.Normal, skin?: number): string {\n let portrait: string = \"\";\n let curSkin = role.getCurSkin();\n if (skin === undefined && curSkin > 0) {\n skin = curSkin;\n }\n portrait = \"textures/portrait/\" + role.getConfig().id + \"/\" + (skin !== undefined ? skin + \"/\" : \"\") + face;\n if (this._model.id === 1) {\n portrait = \"textures/portrait/\" + role.getConfig().id + \"/\" + face;\n }\n return portrait;\n }\n\n getRetainVarKeyArr(): string[] {\n let keyArr: string[] = [];\n let branches = GameModelManager.getAllStartedBranches();\n let branchMap = this.getBranchFirstPlotIdMap();\n for (let i = 0; i < branches.length; i++) {\n let startPlotId = branches[i].startPlot;\n let extraId = branchMap[startPlotId + \"\"];\n if (extraId) {\n let recordKey = \"de\" + extraId;\n let f = recordKey + \".f\";\n let s = recordKey + \".s\";\n let b = recordKey + \".bg\";\n if (GameRecord.recordVariables[f]) {\n keyArr.push(f);\n }\n if (GameRecord.recordVariables[s]) {\n keyArr.push(s);\n }\n if (GameRecord.recordVariables[b]) {\n keyArr.push(b);\n }\n }\n }\n return keyArr;\n }\n\n getBranchFirstPlotIdMap(): { [key: string]: number } {\n let map: { [key: string]: number } = {};\n let tbl = ConfigManager.getAllConfig(dateSceneConfig);\n if (tbl) {\n for (let id in tbl) {\n let c = tbl[id];\n if (c && c.DateType == DateType.Date_Sp) {\n map[c.start_plot_id + \"\"] = c.id;\n }\n }\n }\n return map;\n }\n\n onDeadEvent = (pid: number) => {\n if (this._model.status == DatingEventStatus.Completed) {\n let temp: AlertDialogViewProps = {\n dataptr: {},\n titlecontent: \"提示\",\n content: \"触发了死亡结局,但因为是在回忆模式,所以章节不会被重置\",\n ishasad: false,\n istwobtn: false,\n adconfig: \"\",\n hasBanner: false,\n callback: async (type, ret) => {\n if (ret) {\n this.view.closeView();\n }\n }\n };\n UIManager.pushPresenter(AlertDialogViewPresenter, temp);\n } else {\n let temp: AlertDialogViewProps = {\n dataptr: {},\n titlecontent: \"提示\",\n content: \"触发了死亡结局,本章节将<color=red>重置</color>!!\",\n ishasad: false,\n istwobtn: false,\n adconfig: \"\",\n hasBanner: false,\n callback: async (type, ret) => {\n if (ret) {\n let retainVar = this.getRetainVarKeyArr();\n await PlotManager.rollbackToPlot(pid, false, retainVar);\n this.rollBackDateAdArray(pid);\n GameRecord.saveRecord();\n this._showScrollView = !this._showScrollView;\n this.view.closeView();\n await GameModelManager.init((value: number) => {\n });\n GameModelManager.setIsChangePlotSceneType(true);\n UIManager.showSceneToast(\"数据刷新完成\");\n let isSpecialScene: boolean = this._model.id === this._specialDealSceneId;\n this._showBackBtn = !(isSpecialScene && this._model.status === DatingEventStatus.InProgress);\n this.view.showBackBtn(this._showBackBtn);\n GameModelManager.RefreshAllStatus.emit();\n }\n }\n };\n UIManager.pushPresenter(AlertDialogViewPresenter, temp);\n }\n }\n\n private filterFunc = (action: DeepReadonly<Action>): boolean => {\n let isExcute: boolean = true;\n if (action.type === ActionType.ModifyVariable) {\n isExcute = !GameModelManager.checkPlotTipAddGraceAlready(this._currPlot?.id as number);\n if (isExcute) {\n GameModelManager.pushTipAddGracePlot(this._currPlot?.id as number);\n }\n\n }\n return isExcute;\n }\n\n rollBackDateAdArray(pid: number) {\n let models = GameModelManager.getMainDatingEventScenesModel();\n let chapterId = -1;\n for (let i = 0; i < models.length; i++) {\n if (pid == models[i].config.start_plot_id) {\n chapterId = models[i].config.id;\n }\n }\n if (chapterId == -1) {\n console.error(\"Cannot found the chapterId.\");\n }\n let record = GameRecord.globalVariables[\"date_ad_arr\"] as string;\n let a: number[] = [];\n if (record) {\n a = JSON.parse(record);\n a.sort((a, b) => {\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n }\n return 0;\n });\n for (let i = 0; i < a.length; i++) {\n if (a[i] >= chapterId) {\n a.splice(i, a.length - (i - 1));\n GameRecord.globalVariables[\"date_ad_arr\"] = JSON.stringify(a);\n return;\n }\n }\n }\n }\n\n getNextDatingEventKey(): number {\n let nextKey: number = 0;\n let currEventId = this._model.id;\n let plotIds: number[] = [];\n let models = GameModelManager.getMainDatingEventScenesModel();\n for (let i = 0; i < models.length; i++) {\n plotIds.push(models[i].id);\n }\n for (let i = 0; i < plotIds.length; i++) {\n if (plotIds[i] == currEventId) {\n nextKey = plotIds[i + 1];\n }\n }\n console.log(\"getNextDatingEventModel\", nextKey);\n return nextKey;\n }\n\n onReviewButtonClickCallback = async () => {\n let temp: ReviewPlotViewParam = {\n isReview: this._isReview,\n plotString: this._reviewPlot,\n startPlotId: this._model.config.start_plot_id,\n currentPlotId: this._currPlot!.id,\n };\n UIManager.pushPresenter(ReviewPlotViewPresenter, temp);\n }\n\n onSpecialToast = (type: SpecialToastType) => {\n UIManager.showSpecialToast(type);\n }\n}"]}
\ No newline at end of file
......@@ -33,7 +33,6 @@ const DatingEventSubview_1 = require("../view/type/DatingEventSubview");
const DatingEventView_1 = require("../view/type/DatingEventView");
const AlertDialogViewPresenter_1 = require("./AlertDialogViewPresenter");
const DatingScenePresenter_1 = require("./DatingScenePresenter");
const ExtraPlotViewPresenter_1 = require("./ExtraPlotViewPresenter");
const GuideViewPresenter_1 = require("./GuideViewPresenter");
let DatingEventViewPresenter = /** @class */ (() => {
let DatingEventViewPresenter = class DatingEventViewPresenter extends PresenterBase_1.Presenter {
......@@ -296,9 +295,6 @@ let DatingEventSubpresenter = /** @class */ (() => {
})
.start();
};
this.onExtraPlotButtonClickCallback = () => {
UIManager_1.UIManager.pushPresenter(ExtraPlotViewPresenter_1.default, undefined);
};
}
sceneModelToViewModel(item, index) {
this._modelMap[item.id.toString()] = item;
......@@ -378,7 +374,6 @@ let DatingEventSubpresenter = /** @class */ (() => {
onLeftButtonClickCallback: this.onLeftButtonClickCallback,
onRightButtonClickCallback: this.onRightButtonClickCallback,
onNameButtonClickCallback: this.onNameButtonClickCallback,
onExtraPlotButtonClickCallback: this.onExtraPlotButtonClickCallback,
onCloseSectionViewCallBack: this.onCloseSectionViewCallBack
});
}
......@@ -474,11 +469,6 @@ let DatingEventSubpresenter = /** @class */ (() => {
this._disposable.add(GameModelManager_1.GameModelManager.RefreshAllStatus.on(this.onRefreshAllStatus));
this._disposable.add(GameModelManager_1.GameModelManager.CloseDatingSceneView.on(this.onCloseDatingSceneView));
this._disposable.add(GameModelManager_1.GameModelManager.CloseExtraSceneView.on(this.onCloseExtraSceneView));
this._disposable.add(GameModelManager_1.GameModelManager.OpenExtraPlotView.on(this.onExtraPlotButtonClickCallback));
// let isNeedEnterCurChapter = GameModelManager.checkIsNeedEnterCurDateChapter();
// if (isNeedEnterCurChapter) {
// this.selectCurChapter();
// }
this.selectCurChapter();
if (!this.view.isHidden) {
this.refreshMaxChapterIndex();
......
{"version":3,"sources":["assets/script/game/ui/presenter/DatingEventViewPresenter.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import { ResUtils } from \"simba-cc-resutils\";\nimport { ConfigManager } from \"simba-config-manager\";\nimport { GameRecord, PlotManager, ReadonlyPlots } from \"../../../avg/AVG\";\nimport { DateType } from \"../../../avg/EditorEnums\";\nimport { Presenter, Subpresenter } from \"../../../common/classbase/PresenterBase\";\nimport { GameTextData } from \"../../../common/gameplay/gamedata/GameTextData\";\nimport { UIManager } from \"../../../common/gameplay/managers/UIManager\";\nimport { StringUtils } from \"../../../common/utils/StringUtils\";\nimport { dateSceneConfig } from \"../../../config/DateSceneConfig\";\nimport { GameConfig } from \"../../../GameConfig\";\nimport { CommonLocation, DatePrefabDirectType, DirectionType, EventLocation, EventOperationType, GuideLocation, GuideOperationType, GuideState, StepType } from \"../../Enums\";\nimport GameDotMgr from \"../../GameDotMgr\";\nimport CDKeyEventManager from \"../../model/CDKeyEventManager\";\nimport { DatingEventSceneModel, DatingEventStatus } from \"../../model/DatingEventSceneModel\";\nimport { ExtraStoryModelManager } from \"../../model/ExtraStoryModelManager\";\nimport { GameModelManager } from \"../../model/GameModelManager\";\nimport { RegPresenter, RegSubpresenter } from \"../PresenterCCViewFactory\";\nimport SectionBtn from \"../SectionBtn\";\nimport { AlertDialogViewProps } from \"../view/type/AlertDialogView\";\nimport { DatingEventItemProps, DatingEventSubview, DatingEventSubviewType } from \"../view/type/DatingEventSubview\";\nimport { DatingEventView, DatingEventViewProps, DatingEventViewType } from \"../view/type/DatingEventView\";\nimport { ExtraPlotViewProps } from \"../view/type/ExtraPlotView\";\nimport AlertDialogViewPresenter from \"./AlertDialogViewPresenter\";\nimport { DatingScenePresenter } from \"./DatingScenePresenter\";\nimport ExtraPlotViewPresenter from \"./ExtraPlotViewPresenter\";\nimport GuideViewPresenter, { GuideViewParamModel } from \"./GuideViewPresenter\";\n\n@RegPresenter(DatingEventViewType)\nexport default class DatingEventViewPresenter extends Presenter<undefined, DatingEventView> {\n static uuid = \"DatingEventViewPresenter\";\n\n private _viewProps: DatingEventViewProps;\n constructor() {\n super();\n this._viewProps = {\n }\n }\n\n onOpen() {\n super.onOpen(undefined);\n this._disposable.add(GameModelManager.ShowDatingEventArrowGuide.on(this.onShowDatingEventArrowGuide));\n this.onShow();\n }\n\n onEnterForeground() {\n super.onEnterForeground();\n }\n\n onShow() {\n super.onShow();\n this.view.setProps(this._viewProps);\n if (GameConfig.debug) {\n this.view.showRoleLikeLabel();\n this.view.showMaskLabel();\n }\n }\n\n onClose() {\n super.onClose();\n }\n\n onShowDatingEventArrowGuide = (isShow: boolean, wordPos?: cc.Vec3) => {\n this.view.showArrowGuide(isShow, wordPos);\n }\n}\n\n@RegSubpresenter(DatingEventSubviewType)\nexport class DatingEventSubpresenter extends Subpresenter<DatingEventSubview> {\n // private _items: DatingEventItemProps[];\n private _lineStyle: 0 | 1 = 0;\n private _modelMap: { [key: string]: DatingEventSceneModel } = {};\n private _dailySceneNum: number = -1;\n private _curChapterIndex: number = 1;\n private _maxChapterIndex: number = 1;\n private _maxChapterIsChange: boolean = false;\n private _isStartBranches: boolean = false;\n private _clickKey: string = \"\";\n isReview: boolean;\n\n private sceneModelToViewModel(item: DatingEventSceneModel, index: number): DatingEventItemProps {\n this._modelMap[item.id.toString()] = item;\n // let cfg = ConfigManager.getConfig(dateSceneConfig, item.id);\n // let progress = GameModelManager.getDateSceneKeyPlotsProgress(item.id);\n let direct = DatePrefabDirectType.Left;\n if (this._curChapterIndex % 2 === 1) {\n direct = (index + 1) % 2 === 1 ? DatePrefabDirectType.Left : DatePrefabDirectType.Right;\n } else {\n direct = (index + 1) % 2 === 0 ? DatePrefabDirectType.Left : DatePrefabDirectType.Right;\n }\n return {\n key: item.id + \"\",\n title: GameModelManager.getConfigLanguageTxt(item.config.name),\n // date: item.config.date,\n // time: item.config.time,\n status: item.status,\n coverImage: \"textures/dating_event/cover/\" + item.config.background,\n // lineStyle: this._lineStyle,\n // progress: progress,\n // showItemClear: item.status === DatingEventStatus.Completed && progress === 100,\n // showProgress: item.status === DatingEventStatus.Completed,\n // firstCostNum: cfg.first_energy_cost,\n // reviewCostNum: cfg.memory_energy_cost,\n itype: direct\n }\n }\n\n refreshItems() {\n let items: DatingEventItemProps[] = [];\n let srcModels = GameModelManager.getMainDatingEventScenesModelByChapterindex(this._curChapterIndex);\n // let srcModels = GameModelManager.getMainDatingEventScenesModel();\n for (let i = srcModels.length - 1; i >= 0; i--) {\n items.push(this.sceneModelToViewModel(srcModels[i], i));\n }\n // if (items.length) {\n // items[0].lineStyle = \"none\";\n // }\n //count dailySceneNum from table\n if (this._dailySceneNum == -1) {\n let maxItemsNum: number = 0;\n let cfg = ConfigManager.getAllConfig(dateSceneConfig);\n for (let id in cfg) {\n let c = cfg[id];\n if (c) {\n maxItemsNum++;\n }\n }\n this._dailySceneNum = maxItemsNum;\n }\n let showContinue = false;\n if (srcModels.length !== 0) {\n let c = 0;\n let cfgs = ConfigManager.getAllConfig(dateSceneConfig);\n for (let id in cfgs) {\n let cfg = cfgs[id];\n if (cfg) {\n c++;\n }\n }\n let last = srcModels[srcModels.length - 1];\n showContinue = last.id === c;\n }\n this.view.setProps({\n items,\n onItemClick: this.onItemAdModeClick,\n // onItemClick: this.onItemEnergyCostClick,\n showContinue: showContinue,\n chapterName: this.getChapterName(this._curChapterIndex),\n showLeft: this._curChapterIndex !== 1,\n showRight: this._curChapterIndex !== this._maxChapterIndex,\n showChapterClear: this.checkChapterClear(items, this._curChapterIndex),\n onOptionChapter: this.onOptionChapter,\n chapterIndex: this._curChapterIndex,\n onScrollBegin: this.onScrollBegin,\n onScrollEnd: this.onScrollEnd,\n onLeftButtonClickCallback: this.onLeftButtonClickCallback,\n onRightButtonClickCallback: this.onRightButtonClickCallback,\n onNameButtonClickCallback: this.onNameButtonClickCallback,\n onExtraPlotButtonClickCallback: this.onExtraPlotButtonClickCallback,\n onCloseSectionViewCallBack: this.onCloseSectionViewCallBack\n });\n }\n\n onScrollBegin = () => {\n GameModelManager.ShowDatingEventArrowGuide.emit(false);\n }\n\n onScrollEnd = () => {\n this.refreshArrowGuide();\n }\n\n checkChapterClear(items: DatingEventItemProps[], chapterIndex: number): boolean {\n let showClear: boolean = true;\n let cfg = ConfigManager.getAllConfig(dateSceneConfig);\n let cnt = 0;\n for (let id in cfg) {\n let c = cfg[id]\n if (c && c.chapter_index === chapterIndex) {\n cnt++;\n }\n }\n if (cnt !== items.length) {\n return false;\n }\n // for (let i = 0; i < items.length; i++) {\n // if (items[i].showItemClear === false) {\n // showClear = false;\n // break;\n // }\n // }\n return showClear;\n }\n\n getChapterName(chapterIndex: number): string {\n chapterIndex -= 1;\n let nameArr: string[] =\n [\n \"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"七\", \"八\", \"九\", \"十\",\n \"十一\", \"十二\", \"十三\", \"十四\", \"十五\", \"十六\", \"十七\", \"十八\", \"十九\", \"二十\"\n ];\n let name = StringUtils.format(GameModelManager.getLanguageTxt(GameTextData.GAME_TEXT_CHAPTER_NAME), nameArr[chapterIndex]);\n return name\n }\n\n onItemAdModeClick = (key: string) => {\n GameModelManager.setGuideEventItemRecord(key, GuideState.Complete);\n let m = this._modelMap[key];\n let hasRecord = this.checkIsSceneHasAdRecord(m.id);\n CDKeyEventManager.getInstance().shiftCDKeyRemovePlotAD();\n let removeAdCardNum: number = CDKeyEventManager.getInstance().checkCDKeyRemovePlotAD();\n if (m.status !== DatingEventStatus.Completed) {\n GameDotMgr.getInstance().dotClickUI(\"click_date_card\" + m.config.id);\n }\n let showAdAlert: boolean = !(removeAdCardNum > 0) && !hasRecord && m.config.ads === 1 && m.status == DatingEventStatus.New;\n if (showAdAlert) {\n let temp: AlertDialogViewProps =\n {\n dataptr: { key },\n titlecontent: GameModelManager.getLanguageTxt(GameTextData.GAME_TEXT_WAIT_VALUE),\n content: GameModelManager.getLanguageTxt(GameTextData.GAME_TEXT_SHOW_AD_UNLOCK_DATE_VALUE),\n ishasad: true,\n istwobtn: true,\n adconfig: \"inject_fruit\",\n location: CommonLocation.Event,\n callback: this.showAdCallBack,\n hasBanner: false,\n isthreebtn: true\n };\n console.log(\"Push AlertDialogViewPros data end\");\n UIManager.pushPresenter(AlertDialogViewPresenter, temp);\n console.log(\"pushPresenter=========\");\n } else {\n this.enterDatingScene(key);\n }\n }\n\n showAdCallBack = (type, ret: boolean, param: any) => {\n if (ret) {\n //if (type === \"video\" || channel == \"dummy\") {\n if (true) {\n let key = param[\"key\"] as string;\n let m = this._modelMap[key];\n this.pushSceneAdToRecord(m.id);\n setTimeout(() => {\n this.enterDatingScene(key);\n }, 300);\n } else {\n UIManager.popPresenter();\n setTimeout(() => {\n let temp: AlertDialogViewProps =\n {\n dataptr: {},\n titlecontent: \"提示\",\n content: \"今天广告君太累了,休息啦~~可以点击去除广告,或者明天再来哦(*•̀ᴗ•́*)و ̑̑\",\n ishasad: false,\n istwobtn: true,\n adconfig: \"\",\n callback: () => {\n\n },\n hasBanner: false,\n isadlimit: true\n };\n UIManager.pushPresenter(AlertDialogViewPresenter, temp);\n }, 500);\n }\n } else {\n if (type === \"video\") {\n UIManager.showToast(\"解锁失败,请完整观看视频,不可点击跳过\");\n }\n }\n }\n\n checkIsSceneHasAdRecord(id: number): boolean {\n let ret: boolean = false;\n let record = GameRecord.globalVariables[\"date_ad_arr\"] as string;\n if (record) {\n let a: number[] = JSON.parse(record);\n let i = a.findIndex((v) => v === id);\n ret = i !== -1;\n }\n return ret;\n }\n\n pushSceneAdToRecord(id: number) {\n let record = GameRecord.globalVariables[\"date_ad_arr\"] as string;\n let a: number[] = [];\n let isExsit: boolean = false;\n if (record) {\n a = JSON.parse(record);\n let i = a.findIndex((v) => v === id);\n if (i >= 0) {\n isExsit = true;\n }\n }\n if (!isExsit) {\n a.push(id);\n a.reverse();\n GameRecord.globalVariables[\"date_ad_arr\"] = JSON.stringify(a);\n GameRecord.autoSave();\n }\n }\n\n enterDatingScene(key: string) {\n GameModelManager.ShowDatingEventArrowGuide.emit(false);\n UIManager.pushPresenter(DatingScenePresenter, this._modelMap[key], true);\n }\n\n onOwnerShow() {\n if (!this.view.isHidden) {\n this.selectCurChapter();\n this.refreshMaxChapterIndex();\n this.refreshItems();\n this.refreshArrowGuide();\n this.changeButtonState();\n this.checkLastChapterIsOver();\n this.onCloseSectionViewCallBack();\n }\n }\n\n onOwnerEnterForeground() {\n if (!this.view.isHidden) {\n this.refreshMaxChapterIndex();\n this.refreshItems();\n this.refreshArrowGuide();\n this.changeButtonState();\n this.checkLastChapterIsOver();\n }\n if (this._maxChapterIsChange) {\n this.selectCurChapter();\n }\n }\n\n onOpen() {\n super.onOpen();\n this._disposable.add(GameModelManager.CheckDateGuide.on(this.checkGuideItem));\n this._disposable.add(GameModelManager.ForceClickDatingItem.on(this.onForceClickItem));\n this._disposable.add(GameModelManager.RefreshAllStatus.on(this.onRefreshAllStatus));\n this._disposable.add(GameModelManager.CloseDatingSceneView.on(this.onCloseDatingSceneView));\n this._disposable.add(GameModelManager.CloseExtraSceneView.on(this.onCloseExtraSceneView));\n this._disposable.add(GameModelManager.OpenExtraPlotView.on(this.onExtraPlotButtonClickCallback));\n // let isNeedEnterCurChapter = GameModelManager.checkIsNeedEnterCurDateChapter();\n // if (isNeedEnterCurChapter) {\n // this.selectCurChapter();\n // }\n this.selectCurChapter();\n if (!this.view.isHidden) {\n this.refreshMaxChapterIndex();\n this.onShow();\n }\n }\n\n async onShow() {\n this.refreshMaxChapterIndex();\n this.refreshItems();\n this.checkGuideItem();\n this.refreshArrowGuide();\n this.changeButtonState();\n this.checkLastChapterIsOver();\n await this.updateExtraPlotButtonRedDot();\n }\n\n onHide() {\n\n }\n\n selectCurChapter() {\n let models = GameModelManager.getMainDatingEventScenesModel();\n if (models && models.length) {\n let last = models[models.length - 1];\n this._curChapterIndex = last.config.chapter_index;\n if (this._curChapterIndex !== 1) {\n GameModelManager.setNotNeedEnterCurDateChapter();\n }\n }\n }\n\n checkGuideItem = () => {\n let k = GameModelManager.getEventItemGuideKey();\n if (k && \"\" !== k) {\n let node = this.view.getItemNode(k);\n if (node) {\n let wp = node.convertToWorldSpaceAR(cc.v2(0, 0));\n let m: GuideViewParamModel = {\n x: wp.x,\n y: wp.y,\n w: node.width,\n h: node.height,\n d: DirectionType.DOWM,\n call: () => {\n this.onItemAdModeClick(k);\n // this.onItemEnergyCostClick(k);\n GameModelManager.setGuideEventItemRecord(k, GuideState.Complete);\n }\n }\n UIManager.pushPresenter(GuideViewPresenter, m);\n }\n }\n this.refreshArrowGuide();\n }\n\n refreshMaxChapterIndex() {\n let maxChapterIndex = this._maxChapterIndex;\n let arr = GameModelManager.getMainDatingEventScenesModel();\n if (arr && arr.length) {\n let dId = arr[arr.length - 1].id;\n let cfg = ConfigManager.getConfig(dateSceneConfig, dId);\n this._maxChapterIndex = cfg.chapter_index;\n }\n this._maxChapterIsChange = maxChapterIndex == this._maxChapterIndex ? false : true;\n }\n\n onOptionChapter = (stepType: StepType) => {\n let tempIndex = stepType === StepType.Add ? this._curChapterIndex + 1 : this._curChapterIndex - 1;\n this._curChapterIndex = tempIndex >= 1 && tempIndex <= this._maxChapterIndex ? tempIndex : this._curChapterIndex;\n this.refreshItems();\n }\n\n costEnergyCallBack = (type, ret: boolean, param: any) => {\n if (ret) {\n let oprType = this.isReview ? EventOperationType.memory : EventOperationType.event;\n let location = EventLocation.ClickEnergyCost;\n let role = GameModelManager.getPlayerData();\n let key = param[\"key\"] as string;\n let m = this._modelMap[key];\n this.pushSceneAdToRecord(m.id);\n setTimeout(() => {\n this.enterDatingScene(key);\n }, 300);\n }\n }\n\n\n refreshArrowGuide() {\n let srcModels = GameModelManager.getMainDatingEventScenesModelByChapterindex(this._curChapterIndex);\n if (!srcModels || srcModels.length === 0) {\n return;\n }\n let model = srcModels[srcModels.length - 1];\n if (model.status !== DatingEventStatus.Completed) {\n let key = model.id + \"\";\n let node = this.view.getItemNode(key);\n if (node) {\n let wp = node.convertToWorldSpaceAR(cc.v2(0, 0));\n //世界坐标y是否在屏幕区域内\n if (wp.y > 120 && wp.y < cc.winSize.height - 200) {\n GameModelManager.ShowDatingEventArrowGuide.emit(true, cc.v3(wp.x, wp.y, 0));\n } else {\n GameModelManager.ShowDatingEventArrowGuide.emit(false);\n }\n }\n } else {\n GameModelManager.ShowDatingEventArrowGuide.emit(false);\n }\n }\n\n onForceClickItem = (id: number) => {\n console.log(\"DatingEventSubpresenter onForceClickItem id = \", id);\n let k = id + \"\";\n if (!this._modelMap || !this._modelMap[k]) {\n return;\n }\n this._clickKey = k;\n if (!this._isStartBranches) {\n this.onItemAdModeClick(k);\n } else {\n //@ts-ignore\n this.view.schedule(this.checkCanEnterDatingScene, 0.1);\n }\n }\n\n checkCanEnterDatingScene = () => {\n if (!this._isStartBranches) {\n this.onItemAdModeClick(this._clickKey);\n //@ts-ignore\n this.view.unschedule(this.checkCanEnterDatingScene);\n }\n }\n\n onRefreshAllStatus = () => {\n this.selectCurChapter();\n this.onShow();\n }\n\n onCloseDatingSceneView = (eventId: number) => {\n // this.view.setCurrEventId(eventId);\n let cfg = ConfigManager.getAllConfig(dateSceneConfig);\n for (const id in cfg) {\n if (cfg[id].id == eventId) {\n this._curChapterIndex = cfg[id].chapter_index;\n }\n }\n this.refreshItems();\n this.checkGuideItem();\n this.refreshArrowGuide();\n this.changeButtonState();\n this.checkLastChapterIsOver();\n }\n\n onCloseExtraSceneView = async () => {\n await this.updateExtraPlotButtonRedDot();\n }\n\n changeButtonState() {\n let nameSprite = this.view.getNameButton().node.getComponent(cc.Sprite);\n nameSprite.scheduleOnce(async () => {\n let spritePath = \"textures/main_view/dating/chapterIcon/chapter\";\n nameSprite.spriteFrame = await ResUtils.loadRes(spritePath + this._curChapterIndex, cc.SpriteFrame);\n if (this._curChapterIndex == this._maxChapterIndex) {\n this.view.getRightButton().node.opacity = 0;\n } else {\n this.view.getRightButton().node.opacity = 255;\n }\n if (this._curChapterIndex == 1) {\n this.view.getLeftButton().node.opacity = 0;\n } else {\n this.view.getLeftButton().node.opacity = 255;\n }\n });\n }\n\n checkLastChapterIsOver() {\n let isOver = false;\n let arr = GameModelManager.getMainDatingEventScenesModel();\n if (arr && arr.length) {\n let lastChapter = arr[arr.length - 1];\n isOver = lastChapter.status == DatingEventStatus.Completed ? true : false;\n }\n if (!isOver && this._curChapterIndex !== this._maxChapterIndex) {\n this.view.getRightButton().node.getChildByName(\"RedDotSprite\").active = true;\n this.startButtonAction(this.view.getRightButton().node);\n } else {\n this.view.getRightButton().node.getChildByName(\"RedDotSprite\").active = false;\n this.stopButtonAction(this.view.getRightButton().node);\n }\n }\n\n startButtonAction(node: cc.Node) {\n let fadeInAct = cc.fadeTo(1, 255);\n let fadeOutAct = cc.fadeTo(1, 100);\n let scaleInAct = cc.scaleTo(1, 1.2);\n let scaleOutAct = cc.scaleTo(1, 1);\n node.stopAllActions();\n node.runAction(cc.repeatForever(cc.sequence(fadeInAct, fadeOutAct)));\n node.runAction(cc.repeatForever(cc.sequence(scaleInAct, scaleOutAct)));\n }\n\n stopButtonAction(node: cc.Node) {\n node.stopAllActions();\n node.scale = 1;\n node.opacity = 255;\n }\n\n getAllChapterInfo(): { chapterIndex: number, chapterName: string }[] {\n let chapterIndex: number[] = [];\n let chapterName: string[] = [];\n let cfg = ConfigManager.getAllConfig(dateSceneConfig);\n for (const id in cfg) {\n if (chapterIndex.indexOf(cfg[id].chapter_index) == -1 && cfg[id].chapter_index <= this._maxChapterIndex) {\n chapterIndex.push(cfg[id].chapter_index);\n chapterName.push(cfg[id].chapter_name);\n }\n }\n let chapterInfo: { chapterIndex: number, chapterName: string }[] = [];\n for (let i = 0; i < chapterIndex.length; i++) {\n if (chapterName[i]) {\n chapterInfo.push({\n chapterIndex: chapterIndex[i],\n chapterName: chapterName[i]\n });\n }\n }\n return chapterInfo;\n }\n\n async updateExtraPlotButtonRedDot() {\n //return;\n this._isStartBranches = true;\n this.view.getExtraPlotButton().getChildByName(\"RedDotSprite\").active = false;\n let cfg = ConfigManager.getAllConfig(dateSceneConfig);\n let startPlotIds: number[] = [];\n let cfgIds:number[] = [];\n for (const id in cfg) {\n if (cfg[id].DateType == DateType.Date_Sp) {\n startPlotIds.push(cfg[id].start_plot_id);\n cfgIds.push(Number(id));\n }\n }\n await ExtraStoryModelManager.startBranches(startPlotIds,(index:number,startPlotId:number)=>{\n let branchStatus = ExtraStoryModelManager.getBranchStatus(cfgIds[index], startPlotId);\n if (branchStatus == DatingEventStatus.New || branchStatus == DatingEventStatus.InProgress) {\n this.view.getExtraPlotButton().getChildByName(\"RedDotSprite\").active = true;\n }\n });\n await ExtraStoryModelManager.exitExtraStory();\n GameModelManager.setIsMainPlotSceneType(false);\n this._isStartBranches = false;\n }\n\n onLeftButtonClickCallback = () => {\n GameModelManager.setIsMainPlotSceneType(false);\n if (this._curChapterIndex == 1) {\n this.view.getLeftButton().node.opacity = 0;\n } else {\n this._curChapterIndex--;\n this.view.getLeftButton().node.opacity = 255;\n this.onShow();\n }\n }\n\n onRightButtonClickCallback = () => {\n GameModelManager.setIsMainPlotSceneType(false);\n if (this._curChapterIndex == this._maxChapterIndex) {\n this.view.getRightButton().node.opacity = 0;\n } else {\n this._curChapterIndex++;\n this.view.getRightButton().node.opacity = 255;\n this.onShow();\n }\n }\n\n onNameButtonClickCallback = () => {\n let allChapterInfo = this.getAllChapterInfo();\n // console.log(\"allChapterInfo\", allChapterInfo);\n this.view.getScrollViewRoot().active = true;\n let scrollView = this.view.getScrollViewRoot().getChildByName(\"ScrollView\");\n scrollView.scaleY = 0;\n cc.tween(scrollView)\n .to(0.2, { scaleY: 1 })\n .call(() => {\n this.view.getScrollViewContent().removeAllChildren();\n for (let i = 0; i < allChapterInfo.length; ++i) {\n let btn = cc.instantiate(this.view.getSectionBtn());\n let isCurrChapter = allChapterInfo[i].chapterIndex == this._curChapterIndex;\n btn.getComponent(SectionBtn).setData(allChapterInfo[i].chapterIndex, allChapterInfo[i].chapterName, isCurrChapter, () => {\n this._curChapterIndex = allChapterInfo[i].chapterIndex;\n this.onShow();\n this.onCloseSectionViewCallBack();\n });\n btn.parent = this.view.getScrollViewContent();\n }\n })\n .start();\n }\n\n onCloseSectionViewCallBack = () => {\n this.view.getScrollViewContent().removeAllChildren();\n let scrollView = this.view.getScrollViewRoot().getChildByName(\"ScrollView\");\n cc.tween(scrollView)\n .to(0.2, { scaleY: 0 })\n .call(() => {\n this.view.getScrollViewRoot().active = false;\n })\n .start();\n }\n\n onExtraPlotButtonClickCallback = () => {\n UIManager.pushPresenter(ExtraPlotViewPresenter, undefined);\n }\n}"]}
\ No newline at end of file
{"version":3,"sources":["assets/script/game/ui/presenter/DatingEventViewPresenter.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import { ResUtils } from \"simba-cc-resutils\";\nimport { ConfigManager } from \"simba-config-manager\";\nimport { GameRecord, PlotManager, ReadonlyPlots } from \"../../../avg/AVG\";\nimport { DateType } from \"../../../avg/EditorEnums\";\nimport { Presenter, Subpresenter } from \"../../../common/classbase/PresenterBase\";\nimport { GameTextData } from \"../../../common/gameplay/gamedata/GameTextData\";\nimport { UIManager } from \"../../../common/gameplay/managers/UIManager\";\nimport { StringUtils } from \"../../../common/utils/StringUtils\";\nimport { dateSceneConfig } from \"../../../config/DateSceneConfig\";\nimport { GameConfig } from \"../../../GameConfig\";\nimport { CommonLocation, DatePrefabDirectType, DirectionType, EventLocation, EventOperationType, GuideLocation, GuideOperationType, GuideState, StepType } from \"../../Enums\";\nimport GameDotMgr from \"../../GameDotMgr\";\nimport CDKeyEventManager from \"../../model/CDKeyEventManager\";\nimport { DatingEventSceneModel, DatingEventStatus } from \"../../model/DatingEventSceneModel\";\nimport { ExtraStoryModelManager } from \"../../model/ExtraStoryModelManager\";\nimport { GameModelManager } from \"../../model/GameModelManager\";\nimport { RegPresenter, RegSubpresenter } from \"../PresenterCCViewFactory\";\nimport SectionBtn from \"../SectionBtn\";\nimport { AlertDialogViewProps } from \"../view/type/AlertDialogView\";\nimport { DatingEventItemProps, DatingEventSubview, DatingEventSubviewType } from \"../view/type/DatingEventSubview\";\nimport { DatingEventView, DatingEventViewProps, DatingEventViewType } from \"../view/type/DatingEventView\";\nimport { ExtraPlotViewProps } from \"../view/type/ExtraPlotView\";\nimport AlertDialogViewPresenter from \"./AlertDialogViewPresenter\";\nimport { DatingScenePresenter } from \"./DatingScenePresenter\";\nimport ExtraPlotViewPresenter from \"./ExtraPlotViewPresenter\";\nimport GuideViewPresenter, { GuideViewParamModel } from \"./GuideViewPresenter\";\n\n@RegPresenter(DatingEventViewType)\nexport default class DatingEventViewPresenter extends Presenter<undefined, DatingEventView> {\n static uuid = \"DatingEventViewPresenter\";\n\n private _viewProps: DatingEventViewProps;\n constructor() {\n super();\n this._viewProps = {\n }\n }\n\n onOpen() {\n super.onOpen(undefined);\n this._disposable.add(GameModelManager.ShowDatingEventArrowGuide.on(this.onShowDatingEventArrowGuide));\n this.onShow();\n }\n\n onEnterForeground() {\n super.onEnterForeground();\n }\n\n onShow() {\n super.onShow();\n this.view.setProps(this._viewProps);\n if (GameConfig.debug) {\n this.view.showRoleLikeLabel();\n this.view.showMaskLabel();\n }\n }\n\n onClose() {\n super.onClose();\n }\n\n onShowDatingEventArrowGuide = (isShow: boolean, wordPos?: cc.Vec3) => {\n this.view.showArrowGuide(isShow, wordPos);\n }\n}\n\n@RegSubpresenter(DatingEventSubviewType)\nexport class DatingEventSubpresenter extends Subpresenter<DatingEventSubview> {\n // private _items: DatingEventItemProps[];\n private _lineStyle: 0 | 1 = 0;\n private _modelMap: { [key: string]: DatingEventSceneModel } = {};\n private _dailySceneNum: number = -1;\n private _curChapterIndex: number = 1;\n private _maxChapterIndex: number = 1;\n private _maxChapterIsChange: boolean = false;\n private _isStartBranches: boolean = false;\n private _clickKey: string = \"\";\n isReview: boolean;\n\n private sceneModelToViewModel(item: DatingEventSceneModel, index: number): DatingEventItemProps {\n this._modelMap[item.id.toString()] = item;\n // let cfg = ConfigManager.getConfig(dateSceneConfig, item.id);\n // let progress = GameModelManager.getDateSceneKeyPlotsProgress(item.id);\n let direct = DatePrefabDirectType.Left;\n if (this._curChapterIndex % 2 === 1) {\n direct = (index + 1) % 2 === 1 ? DatePrefabDirectType.Left : DatePrefabDirectType.Right;\n } else {\n direct = (index + 1) % 2 === 0 ? DatePrefabDirectType.Left : DatePrefabDirectType.Right;\n }\n return {\n key: item.id + \"\",\n title: GameModelManager.getConfigLanguageTxt(item.config.name),\n // date: item.config.date,\n // time: item.config.time,\n status: item.status,\n coverImage: \"textures/dating_event/cover/\" + item.config.background,\n // lineStyle: this._lineStyle,\n // progress: progress,\n // showItemClear: item.status === DatingEventStatus.Completed && progress === 100,\n // showProgress: item.status === DatingEventStatus.Completed,\n // firstCostNum: cfg.first_energy_cost,\n // reviewCostNum: cfg.memory_energy_cost,\n itype: direct\n }\n }\n\n refreshItems() {\n let items: DatingEventItemProps[] = [];\n let srcModels = GameModelManager.getMainDatingEventScenesModelByChapterindex(this._curChapterIndex);\n // let srcModels = GameModelManager.getMainDatingEventScenesModel();\n for (let i = srcModels.length - 1; i >= 0; i--) {\n items.push(this.sceneModelToViewModel(srcModels[i], i));\n }\n // if (items.length) {\n // items[0].lineStyle = \"none\";\n // }\n //count dailySceneNum from table\n if (this._dailySceneNum == -1) {\n let maxItemsNum: number = 0;\n let cfg = ConfigManager.getAllConfig(dateSceneConfig);\n for (let id in cfg) {\n let c = cfg[id];\n if (c) {\n maxItemsNum++;\n }\n }\n this._dailySceneNum = maxItemsNum;\n }\n let showContinue = false;\n if (srcModels.length !== 0) {\n let c = 0;\n let cfgs = ConfigManager.getAllConfig(dateSceneConfig);\n for (let id in cfgs) {\n let cfg = cfgs[id];\n if (cfg) {\n c++;\n }\n }\n let last = srcModels[srcModels.length - 1];\n showContinue = last.id === c;\n }\n this.view.setProps({\n items,\n onItemClick: this.onItemAdModeClick,\n // onItemClick: this.onItemEnergyCostClick,\n showContinue: showContinue,\n chapterName: this.getChapterName(this._curChapterIndex),\n showLeft: this._curChapterIndex !== 1,\n showRight: this._curChapterIndex !== this._maxChapterIndex,\n showChapterClear: this.checkChapterClear(items, this._curChapterIndex),\n onOptionChapter: this.onOptionChapter,\n chapterIndex: this._curChapterIndex,\n onScrollBegin: this.onScrollBegin,\n onScrollEnd: this.onScrollEnd,\n onLeftButtonClickCallback: this.onLeftButtonClickCallback,\n onRightButtonClickCallback: this.onRightButtonClickCallback,\n onNameButtonClickCallback: this.onNameButtonClickCallback,\n onCloseSectionViewCallBack: this.onCloseSectionViewCallBack\n });\n }\n\n onScrollBegin = () => {\n GameModelManager.ShowDatingEventArrowGuide.emit(false);\n }\n\n onScrollEnd = () => {\n this.refreshArrowGuide();\n }\n\n checkChapterClear(items: DatingEventItemProps[], chapterIndex: number): boolean {\n let showClear: boolean = true;\n let cfg = ConfigManager.getAllConfig(dateSceneConfig);\n let cnt = 0;\n for (let id in cfg) {\n let c = cfg[id]\n if (c && c.chapter_index === chapterIndex) {\n cnt++;\n }\n }\n if (cnt !== items.length) {\n return false;\n }\n // for (let i = 0; i < items.length; i++) {\n // if (items[i].showItemClear === false) {\n // showClear = false;\n // break;\n // }\n // }\n return showClear;\n }\n\n getChapterName(chapterIndex: number): string {\n chapterIndex -= 1;\n let nameArr: string[] =\n [\n \"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"七\", \"八\", \"九\", \"十\",\n \"十一\", \"十二\", \"十三\", \"十四\", \"十五\", \"十六\", \"十七\", \"十八\", \"十九\", \"二十\"\n ];\n let name = StringUtils.format(GameModelManager.getLanguageTxt(GameTextData.GAME_TEXT_CHAPTER_NAME), nameArr[chapterIndex]);\n return name\n }\n\n onItemAdModeClick = (key: string) => {\n GameModelManager.setGuideEventItemRecord(key, GuideState.Complete);\n let m = this._modelMap[key];\n let hasRecord = this.checkIsSceneHasAdRecord(m.id);\n CDKeyEventManager.getInstance().shiftCDKeyRemovePlotAD();\n let removeAdCardNum: number = CDKeyEventManager.getInstance().checkCDKeyRemovePlotAD();\n if (m.status !== DatingEventStatus.Completed) {\n GameDotMgr.getInstance().dotClickUI(\"click_date_card\" + m.config.id);\n }\n let showAdAlert: boolean = !(removeAdCardNum > 0) && !hasRecord && m.config.ads === 1 && m.status == DatingEventStatus.New;\n if (showAdAlert) {\n let temp: AlertDialogViewProps =\n {\n dataptr: { key },\n titlecontent: GameModelManager.getLanguageTxt(GameTextData.GAME_TEXT_WAIT_VALUE),\n content: GameModelManager.getLanguageTxt(GameTextData.GAME_TEXT_SHOW_AD_UNLOCK_DATE_VALUE),\n ishasad: true,\n istwobtn: true,\n adconfig: \"inject_fruit\",\n location: CommonLocation.Event,\n callback: this.showAdCallBack,\n hasBanner: false,\n isthreebtn: true\n };\n console.log(\"Push AlertDialogViewPros data end\");\n UIManager.pushPresenter(AlertDialogViewPresenter, temp);\n console.log(\"pushPresenter=========\");\n } else {\n this.enterDatingScene(key);\n }\n }\n\n showAdCallBack = (type, ret: boolean, param: any) => {\n if (ret) {\n //if (type === \"video\" || channel == \"dummy\") {\n if (true) {\n let key = param[\"key\"] as string;\n let m = this._modelMap[key];\n this.pushSceneAdToRecord(m.id);\n setTimeout(() => {\n this.enterDatingScene(key);\n }, 300);\n } else {\n UIManager.popPresenter();\n setTimeout(() => {\n let temp: AlertDialogViewProps =\n {\n dataptr: {},\n titlecontent: \"提示\",\n content: \"今天广告君太累了,休息啦~~可以点击去除广告,或者明天再来哦(*•̀ᴗ•́*)و ̑̑\",\n ishasad: false,\n istwobtn: true,\n adconfig: \"\",\n callback: () => {\n\n },\n hasBanner: false,\n isadlimit: true\n };\n UIManager.pushPresenter(AlertDialogViewPresenter, temp);\n }, 500);\n }\n } else {\n if (type === \"video\") {\n UIManager.showToast(\"解锁失败,请完整观看视频,不可点击跳过\");\n }\n }\n }\n\n checkIsSceneHasAdRecord(id: number): boolean {\n let ret: boolean = false;\n let record = GameRecord.globalVariables[\"date_ad_arr\"] as string;\n if (record) {\n let a: number[] = JSON.parse(record);\n let i = a.findIndex((v) => v === id);\n ret = i !== -1;\n }\n return ret;\n }\n\n pushSceneAdToRecord(id: number) {\n let record = GameRecord.globalVariables[\"date_ad_arr\"] as string;\n let a: number[] = [];\n let isExsit: boolean = false;\n if (record) {\n a = JSON.parse(record);\n let i = a.findIndex((v) => v === id);\n if (i >= 0) {\n isExsit = true;\n }\n }\n if (!isExsit) {\n a.push(id);\n a.reverse();\n GameRecord.globalVariables[\"date_ad_arr\"] = JSON.stringify(a);\n GameRecord.autoSave();\n }\n }\n\n enterDatingScene(key: string) {\n GameModelManager.ShowDatingEventArrowGuide.emit(false);\n UIManager.pushPresenter(DatingScenePresenter, this._modelMap[key], true);\n }\n\n onOwnerShow() {\n if (!this.view.isHidden) {\n this.selectCurChapter();\n this.refreshMaxChapterIndex();\n this.refreshItems();\n this.refreshArrowGuide();\n this.changeButtonState();\n this.checkLastChapterIsOver();\n this.onCloseSectionViewCallBack();\n }\n }\n\n onOwnerEnterForeground() {\n if (!this.view.isHidden) {\n this.refreshMaxChapterIndex();\n this.refreshItems();\n this.refreshArrowGuide();\n this.changeButtonState();\n this.checkLastChapterIsOver();\n }\n if (this._maxChapterIsChange) {\n this.selectCurChapter();\n }\n }\n\n onOpen() {\n super.onOpen();\n this._disposable.add(GameModelManager.CheckDateGuide.on(this.checkGuideItem));\n this._disposable.add(GameModelManager.ForceClickDatingItem.on(this.onForceClickItem));\n this._disposable.add(GameModelManager.RefreshAllStatus.on(this.onRefreshAllStatus));\n this._disposable.add(GameModelManager.CloseDatingSceneView.on(this.onCloseDatingSceneView));\n this._disposable.add(GameModelManager.CloseExtraSceneView.on(this.onCloseExtraSceneView));\n\n this.selectCurChapter();\n if (!this.view.isHidden) {\n this.refreshMaxChapterIndex();\n this.onShow();\n }\n }\n\n async onShow() {\n this.refreshMaxChapterIndex();\n this.refreshItems();\n this.checkGuideItem();\n this.refreshArrowGuide();\n this.changeButtonState();\n this.checkLastChapterIsOver();\n await this.updateExtraPlotButtonRedDot();\n }\n\n onHide() {\n\n }\n\n selectCurChapter() {\n let models = GameModelManager.getMainDatingEventScenesModel();\n if (models && models.length) {\n let last = models[models.length - 1];\n this._curChapterIndex = last.config.chapter_index;\n if (this._curChapterIndex !== 1) {\n GameModelManager.setNotNeedEnterCurDateChapter();\n }\n }\n }\n\n checkGuideItem = () => {\n let k = GameModelManager.getEventItemGuideKey();\n if (k && \"\" !== k) {\n let node = this.view.getItemNode(k);\n if (node) {\n let wp = node.convertToWorldSpaceAR(cc.v2(0, 0));\n let m: GuideViewParamModel = {\n x: wp.x,\n y: wp.y,\n w: node.width,\n h: node.height,\n d: DirectionType.DOWM,\n call: () => {\n this.onItemAdModeClick(k);\n // this.onItemEnergyCostClick(k);\n GameModelManager.setGuideEventItemRecord(k, GuideState.Complete);\n }\n }\n UIManager.pushPresenter(GuideViewPresenter, m);\n }\n }\n this.refreshArrowGuide();\n }\n\n refreshMaxChapterIndex() {\n let maxChapterIndex = this._maxChapterIndex;\n let arr = GameModelManager.getMainDatingEventScenesModel();\n if (arr && arr.length) {\n let dId = arr[arr.length - 1].id;\n let cfg = ConfigManager.getConfig(dateSceneConfig, dId);\n this._maxChapterIndex = cfg.chapter_index;\n }\n this._maxChapterIsChange = maxChapterIndex == this._maxChapterIndex ? false : true;\n }\n\n onOptionChapter = (stepType: StepType) => {\n let tempIndex = stepType === StepType.Add ? this._curChapterIndex + 1 : this._curChapterIndex - 1;\n this._curChapterIndex = tempIndex >= 1 && tempIndex <= this._maxChapterIndex ? tempIndex : this._curChapterIndex;\n this.refreshItems();\n }\n\n costEnergyCallBack = (type, ret: boolean, param: any) => {\n if (ret) {\n let oprType = this.isReview ? EventOperationType.memory : EventOperationType.event;\n let location = EventLocation.ClickEnergyCost;\n let role = GameModelManager.getPlayerData();\n let key = param[\"key\"] as string;\n let m = this._modelMap[key];\n this.pushSceneAdToRecord(m.id);\n setTimeout(() => {\n this.enterDatingScene(key);\n }, 300);\n }\n }\n\n\n refreshArrowGuide() {\n let srcModels = GameModelManager.getMainDatingEventScenesModelByChapterindex(this._curChapterIndex);\n if (!srcModels || srcModels.length === 0) {\n return;\n }\n let model = srcModels[srcModels.length - 1];\n if (model.status !== DatingEventStatus.Completed) {\n let key = model.id + \"\";\n let node = this.view.getItemNode(key);\n if (node) {\n let wp = node.convertToWorldSpaceAR(cc.v2(0, 0));\n //世界坐标y是否在屏幕区域内\n if (wp.y > 120 && wp.y < cc.winSize.height - 200) {\n GameModelManager.ShowDatingEventArrowGuide.emit(true, cc.v3(wp.x, wp.y, 0));\n } else {\n GameModelManager.ShowDatingEventArrowGuide.emit(false);\n }\n }\n } else {\n GameModelManager.ShowDatingEventArrowGuide.emit(false);\n }\n }\n\n onForceClickItem = (id: number) => {\n console.log(\"DatingEventSubpresenter onForceClickItem id = \", id);\n let k = id + \"\";\n if (!this._modelMap || !this._modelMap[k]) {\n return;\n }\n this._clickKey = k;\n if (!this._isStartBranches) {\n this.onItemAdModeClick(k);\n } else {\n //@ts-ignore\n this.view.schedule(this.checkCanEnterDatingScene, 0.1);\n }\n }\n\n checkCanEnterDatingScene = () => {\n if (!this._isStartBranches) {\n this.onItemAdModeClick(this._clickKey);\n //@ts-ignore\n this.view.unschedule(this.checkCanEnterDatingScene);\n }\n }\n\n onRefreshAllStatus = () => {\n this.selectCurChapter();\n this.onShow();\n }\n\n onCloseDatingSceneView = (eventId: number) => {\n // this.view.setCurrEventId(eventId);\n let cfg = ConfigManager.getAllConfig(dateSceneConfig);\n for (const id in cfg) {\n if (cfg[id].id == eventId) {\n this._curChapterIndex = cfg[id].chapter_index;\n }\n }\n this.refreshItems();\n this.checkGuideItem();\n this.refreshArrowGuide();\n this.changeButtonState();\n this.checkLastChapterIsOver();\n }\n\n onCloseExtraSceneView = async () => {\n await this.updateExtraPlotButtonRedDot();\n }\n\n changeButtonState() {\n let nameSprite = this.view.getNameButton().node.getComponent(cc.Sprite);\n nameSprite.scheduleOnce(async () => {\n let spritePath = \"textures/main_view/dating/chapterIcon/chapter\";\n nameSprite.spriteFrame = await ResUtils.loadRes(spritePath + this._curChapterIndex, cc.SpriteFrame);\n if (this._curChapterIndex == this._maxChapterIndex) {\n this.view.getRightButton().node.opacity = 0;\n } else {\n this.view.getRightButton().node.opacity = 255;\n }\n if (this._curChapterIndex == 1) {\n this.view.getLeftButton().node.opacity = 0;\n } else {\n this.view.getLeftButton().node.opacity = 255;\n }\n });\n }\n\n checkLastChapterIsOver() {\n let isOver = false;\n let arr = GameModelManager.getMainDatingEventScenesModel();\n if (arr && arr.length) {\n let lastChapter = arr[arr.length - 1];\n isOver = lastChapter.status == DatingEventStatus.Completed ? true : false;\n }\n if (!isOver && this._curChapterIndex !== this._maxChapterIndex) {\n this.view.getRightButton().node.getChildByName(\"RedDotSprite\").active = true;\n this.startButtonAction(this.view.getRightButton().node);\n } else {\n this.view.getRightButton().node.getChildByName(\"RedDotSprite\").active = false;\n this.stopButtonAction(this.view.getRightButton().node);\n }\n }\n\n startButtonAction(node: cc.Node) {\n let fadeInAct = cc.fadeTo(1, 255);\n let fadeOutAct = cc.fadeTo(1, 100);\n let scaleInAct = cc.scaleTo(1, 1.2);\n let scaleOutAct = cc.scaleTo(1, 1);\n node.stopAllActions();\n node.runAction(cc.repeatForever(cc.sequence(fadeInAct, fadeOutAct)));\n node.runAction(cc.repeatForever(cc.sequence(scaleInAct, scaleOutAct)));\n }\n\n stopButtonAction(node: cc.Node) {\n node.stopAllActions();\n node.scale = 1;\n node.opacity = 255;\n }\n\n getAllChapterInfo(): { chapterIndex: number, chapterName: string }[] {\n let chapterIndex: number[] = [];\n let chapterName: string[] = [];\n let cfg = ConfigManager.getAllConfig(dateSceneConfig);\n for (const id in cfg) {\n if (chapterIndex.indexOf(cfg[id].chapter_index) == -1 && cfg[id].chapter_index <= this._maxChapterIndex) {\n chapterIndex.push(cfg[id].chapter_index);\n chapterName.push(cfg[id].chapter_name);\n }\n }\n let chapterInfo: { chapterIndex: number, chapterName: string }[] = [];\n for (let i = 0; i < chapterIndex.length; i++) {\n if (chapterName[i]) {\n chapterInfo.push({\n chapterIndex: chapterIndex[i],\n chapterName: chapterName[i]\n });\n }\n }\n return chapterInfo;\n }\n\n async updateExtraPlotButtonRedDot() {\n //return;\n this._isStartBranches = true;\n this.view.getExtraPlotButton().getChildByName(\"RedDotSprite\").active = false;\n let cfg = ConfigManager.getAllConfig(dateSceneConfig);\n let startPlotIds: number[] = [];\n let cfgIds:number[] = [];\n for (const id in cfg) {\n if (cfg[id].DateType == DateType.Date_Sp) {\n startPlotIds.push(cfg[id].start_plot_id);\n cfgIds.push(Number(id));\n }\n }\n await ExtraStoryModelManager.startBranches(startPlotIds,(index:number,startPlotId:number)=>{\n let branchStatus = ExtraStoryModelManager.getBranchStatus(cfgIds[index], startPlotId);\n if (branchStatus == DatingEventStatus.New || branchStatus == DatingEventStatus.InProgress) {\n this.view.getExtraPlotButton().getChildByName(\"RedDotSprite\").active = true;\n }\n });\n await ExtraStoryModelManager.exitExtraStory();\n GameModelManager.setIsMainPlotSceneType(false);\n this._isStartBranches = false;\n }\n\n onLeftButtonClickCallback = () => {\n GameModelManager.setIsMainPlotSceneType(false);\n if (this._curChapterIndex == 1) {\n this.view.getLeftButton().node.opacity = 0;\n } else {\n this._curChapterIndex--;\n this.view.getLeftButton().node.opacity = 255;\n this.onShow();\n }\n }\n\n onRightButtonClickCallback = () => {\n GameModelManager.setIsMainPlotSceneType(false);\n if (this._curChapterIndex == this._maxChapterIndex) {\n this.view.getRightButton().node.opacity = 0;\n } else {\n this._curChapterIndex++;\n this.view.getRightButton().node.opacity = 255;\n this.onShow();\n }\n }\n\n onNameButtonClickCallback = () => {\n let allChapterInfo = this.getAllChapterInfo();\n // console.log(\"allChapterInfo\", allChapterInfo);\n this.view.getScrollViewRoot().active = true;\n let scrollView = this.view.getScrollViewRoot().getChildByName(\"ScrollView\");\n scrollView.scaleY = 0;\n cc.tween(scrollView)\n .to(0.2, { scaleY: 1 })\n .call(() => {\n this.view.getScrollViewContent().removeAllChildren();\n for (let i = 0; i < allChapterInfo.length; ++i) {\n let btn = cc.instantiate(this.view.getSectionBtn());\n let isCurrChapter = allChapterInfo[i].chapterIndex == this._curChapterIndex;\n btn.getComponent(SectionBtn).setData(allChapterInfo[i].chapterIndex, allChapterInfo[i].chapterName, isCurrChapter, () => {\n this._curChapterIndex = allChapterInfo[i].chapterIndex;\n this.onShow();\n this.onCloseSectionViewCallBack();\n });\n btn.parent = this.view.getScrollViewContent();\n }\n })\n .start();\n }\n\n onCloseSectionViewCallBack = () => {\n this.view.getScrollViewContent().removeAllChildren();\n let scrollView = this.view.getScrollViewRoot().getChildByName(\"ScrollView\");\n cc.tween(scrollView)\n .to(0.2, { scaleY: 0 })\n .call(() => {\n this.view.getScrollViewRoot().active = false;\n })\n .start();\n }\n}"]}
\ No newline at end of file
......@@ -120,10 +120,6 @@ let MainViewPresenter = /** @class */ (() => {
}
}
};
this.onRefreshDiscoveryRedDot = () => {
this._viewProps.discoverRedDot = !GameModelManager_1.GameModelManager.checkResumeFullEnergyMarked();
this.view.setProps(this._viewProps);
};
this.onMainTabForceClick = (param) => {
UIManager_1.UIManager.popToPresenter(this);
let index = param.index;
......@@ -355,7 +351,6 @@ let MainViewPresenter = /** @class */ (() => {
this._subPresenters[0].open(viewContainer, undefined);
this.dealTabGuide(Enums_1.MainTabs.messageTab);
this._viewProps.selectedTab = Enums_1.MainTabs.messageTab;
this._disposable.add(GameModelManager_1.GameModelManager.RefreshDiscoverTabRed.on(this.onRefreshDiscoveryRedDot));
this._disposable.add(GameModelManager_1.GameModelManager.ShowPlotBlocked.on(this.onShowPlotBlocked));
this._disposable.add(GameModelManager_1.GameModelManager.AutoPopView.on(this.onAutoPopView));
this._disposable.add(GameModelManager_1.GameModelManager.UnlockItem.on(this.onUnlockItem));
......
{"version":3,"sources":["assets/script/game/ui/presenter/MainViewPresenter.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import { ConfigManager } from \"simba-config-manager\";\nimport { GameRecord, PlotManager, ReadonlyPlots, SpecialPlotId } from \"../../../avg/AVG\";\nimport { createPresenter, Presenter } from \"../../../common/classbase/PresenterBase\";\nimport { View } from \"../../../common/classbase/ViewBase\";\nimport { GameTextData } from \"../../../common/gameplay/gamedata/GameTextData\";\nimport { UIManager } from \"../../../common/gameplay/managers/UIManager\";\nimport { dateSceneConfig } from \"../../../config/DateSceneConfig\";\nimport { AutoPopViewType, GuideLocation, GuideOperationType, GuideState, MainTabs, PlotSceneType } from \"../../Enums\";\nimport GameDotMgr from \"../../GameDotMgr\";\nimport { DatingEventStatus } from \"../../model/DatingEventSceneModel\";\nimport { GameModelManager } from \"../../model/GameModelManager\";\nimport { RegPresenter } from \"../PresenterCCViewFactory\";\nimport VerbView from \"../VerbView\";\nimport { showToBeContinue } from \"../view/impl/AlertToBeContinueImpl\";\nimport { MainView, MainViewProps, MainViewType } from \"../view/type/MainView\";\nimport DatingEventViewPresenter from \"./DatingEventViewPresenter\";\nimport { DatingScenePresenter } from \"./DatingScenePresenter\";\nimport DebugViewPresenter from \"./DebugViewPresenter\";\nimport DiscoverViewPresenter from \"./DiscoverViewPresenter\";\nimport GuideViewPresenter from \"./GuideViewPresenter\";\nimport MessageViewPresenter from \"./MessageViewPresenter\";\nimport NoticeViewPresenter from \"./NoticeViewPresenter\";\nimport PlotStopViewPresenter from \"./PlotStopViewPresenter\";\nimport { AudioManager } from \"simba-cc-audio-manager\";\nimport { DeepReadonlyObject } from \"simba-utils\";\nimport { ResUtils } from \"simba-cc-resutils\";\nimport { GameConstData } from \"../../../common/gameplay/gamedata/GameConstData\";\nimport { UnlockItemModelManager } from \"../../model/UnlockItemModelManager\";\nimport { IItemTbl, itemTbl } from \"../../../config/ItemTbl\";\nimport { channel, GameConfig } from \"../../../GameConfig\";\nimport { HttpClient } from \"simba-httpclient\";\nimport { DateType, PageIndex } from \"../../../avg/EditorEnums\";\nimport NewNoticeViewPresenter from \"./notice/NewNoticeViewPresenter\";\nimport { SourceView } from \"../view/type/notice/NewNoticeView\";\nimport ExtraPlotViewPresenter from \"./ExtraPlotViewPresenter\";\nimport { SDK } from \"simba-sdk\";\n\nconst TabPresenterFactory: ({ new(): Presenter } & { uuid: string })[] = [\n MessageViewPresenter,\n DatingEventViewPresenter,\n DiscoverViewPresenter\n];\n/**主线剧情的下标 */\nconst MAIN_PLOT_INDEX: number = 0;\n@RegPresenter(MainViewType)\nexport default class MainViewPresenter extends Presenter<undefined, MainView> {\n static uuid = \"MainViewPresenter\";\n private _subPresenters: Presenter<any, View>[] = [];\n private _currentTab = 0;\n private _viewProps: MainViewProps;\n private _loadingTab = false;\n private readonly _tabToggleDelayTime = 618;\n private _tabClickAble: boolean = false;\n\n private _itemId: number = -1;\n private _hasItem: boolean = false;\n public static tabIndex: number = -1;\n\n constructor() {\n super();\n this._viewProps = {\n selectedTab: 0,\n messageRedDot: false,\n datingEventRedDot: false,\n discoverRedDot: false,\n onTabClick: this.onTabClick,\n onDebugClick: this.onDebugClickCallback,\n };\n }\n\n onDebugClickCallback = () => {\n UIManager.pushPresenter(DebugViewPresenter, undefined);\n }\n\n onGoToShopClickCallback = () => {\n GameDotMgr.getInstance().dotClickUI(\"shop_btn_MainView\");\n if (channel == \"wechat\") {\n // GameCenter.getInstance().openSubProgram(GameConfig.youZanShopAppId);\n let link = GameModelManager.getYouZanShopUrlByType(8);\n if (link) {\n SDK.openProgramV2(GameConfig.youZanShopAppId, link);\n }\n } else if (channel == \"android\") {\n let link = GameModelManager.getTaoBaoShopUrlByType(8);\n if (link) {\n GameModelManager.jumpToTaobaoShop(link);\n }\n } else {\n UIManager.showToast(\"该功能在当前平台不可使用\");\n }\n }\n\n onCommonProblemClickCallback = async () => {\n try {\n let resStr = await new HttpClient(GameConfig.commonProblemConfigUrl).get() as string;\n let res = JSON.parse(resStr);\n if (res) {\n UIManager.pushPresenter(NoticeViewPresenter, {\n title: res.title,\n content: res.content\n });\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n checkRedDot = (plots: ReadonlyPlots) => {\n this._viewProps.messageRedDot = plots[MAIN_PLOT_INDEX].plotSceneType === PlotSceneType.Message || plots[MAIN_PLOT_INDEX].plotSceneType === PlotSceneType.PhoneCall;\n this._viewProps.datingEventRedDot = false;\n this._viewProps.datingEventRedDot = plots && (plots[0].plotSceneType === PlotSceneType.DatingEvent && (plots[0].id !== SpecialPlotId.ToBeContinued && plots[0].id !== SpecialPlotId.End));\n this.view.setProps(this._viewProps);\n if (plots[MAIN_PLOT_INDEX] && plots[MAIN_PLOT_INDEX].plotSceneType === PlotSceneType.BlockPlot) {\n GameModelManager.dealBlockedPlot();\n } else {\n let change = GameModelManager.isChangePlotSceneType();\n if (change) {\n let p = plots[MAIN_PLOT_INDEX];\n let isSpecial = p.id === SpecialPlotId.End || p.id === SpecialPlotId.ToBeContinued;\n if (!isSpecial) {\n this.onMainPlotChanged(p.plotSceneType, p.plotSceneTypeId);\n GameModelManager.setIsChangePlotSceneType(false);\n }\n }\n }\n }\n\n onRefreshDiscoveryRedDot = () => {\n this._viewProps.discoverRedDot = !GameModelManager.checkResumeFullEnergyMarked();\n this.view.setProps(this._viewProps);\n }\n\n async start() { // 开始游戏\n this._subPresenters[0] = await createPresenter(TabPresenterFactory[0]);\n MainViewPresenter.tabIndex = 0;\n let viewContainer = this._view.getTabContentContainer();\n this._subPresenters[0].open(viewContainer, undefined);\n this.dealTabGuide(MainTabs.messageTab);\n this._viewProps.selectedTab = MainTabs.messageTab;\n\n this._disposable.add(GameModelManager.RefreshDiscoverTabRed.on(this.onRefreshDiscoveryRedDot));\n this._disposable.add(GameModelManager.ShowPlotBlocked.on(this.onShowPlotBlocked));\n this._disposable.add(GameModelManager.AutoPopView.on(this.onAutoPopView));\n this._disposable.add(GameModelManager.UnlockItem.on(this.onUnlockItem));\n\n this._disposable.add(GameModelManager.RefreshAllStatus.on(this.onRefreshAllStatus));\n this._disposable.add(GameModelManager.JumpToViewInGame.on(this.onJumpToViewInGame));\n\n\n this.checkRedDot(PlotManager.getCurrentPlots());\n PlotManager.PlotStartEvent.on(this.checkRedDot);\n let needEnterSpecialDatingScene = this.checkIsNeedToEnterSpecialDatingScene();\n // check tab guide\n // this.checkTabGuide();\n if (needEnterSpecialDatingScene) {\n GameConfig.isVerb = true;\n this.enterSpecialEventScene();\n this._currentTab = MainTabs.datingEventTab;\n this._viewProps.selectedTab = MainTabs.datingEventTab;\n }\n this._tabClickAble = true;\n //进入主界面更新红点状态\n setTimeout(() => {\n //关闭等待界面\n this.view.showWaitingView(false);\n //开始弹起自动窗口\n if (PlotManager.getCurrentPlots()[MAIN_PLOT_INDEX].id === SpecialPlotId.ToBeContinued) {\n GameModelManager.registerAutoPopView(AutoPopViewType.ToBeContinued);\n }\n let autoShowNotice = GameModelManager.getAutoShowNotice();\n if (autoShowNotice) {\n GameModelManager.registerAutoPopView(AutoPopViewType.Notice);\n }\n let unlockItems = UnlockItemModelManager.unlockItems;\n if (unlockItems.indexOf(4) == -1) {\n GameModelManager.registerAutoPopView(AutoPopViewType.NoteBook);\n }\n if (!needEnterSpecialDatingScene) {\n GameModelManager.checkAutoPopView();\n }\n }, 2000);\n }\n\n /**\n * 检查新手教程是否完成,当前新手教程完成的判定是完成第一章\n * @returns \n */\n checkNoviceTutorialOver(): boolean {\n let models = GameModelManager.getMainDatingEventScenesModel();\n for (let i = 0; i < models.length; i++) {\n if (models[i].status == 4) {\n return true;\n }\n }\n return false;\n }\n\n async enterSpecialEventScene() {\n let arr = GameModelManager.getMainDatingEventScenesModel();\n UIManager.pushPresenter(DatingScenePresenter, arr[0], true);\n }\n\n checkIsNeedToEnterSpecialDatingScene() {\n let arr = GameModelManager.getMainDatingEventScenesModel();\n let need = arr && arr.length === 1 && arr[0].status !== DatingEventStatus.Completed;\n return need;\n }\n\n onMainTabForceClick = (param: { index: number, pureClick: boolean, propId?: number }) => {\n UIManager.popToPresenter(this);\n let index = param.index;\n this.onTabClick(index);\n }\n\n onClose() {\n super.onClose();\n UIManager.popToPresenter(this);\n }\n\n onOpen() {\n super.onOpen(undefined);\n // this.perloadPrefab();\n // this.discoverInit();\n }\n\n discoverInit() {\n GameRecord.onGlobalVariableChange(\"red_pot_\" + DiscoverViewPresenter.uuid, () => {\n this._viewProps.discoverRedDot = GameModelManager.checkRedPot(DiscoverViewPresenter.uuid);\n this.view.setProps(this._viewProps);\n });\n this._viewProps.discoverRedDot = GameModelManager.checkRedPot(DiscoverViewPresenter.uuid);\n this.view.setProps(this._viewProps);\n }\n\n perloadPrefab() {\n let PFList = [\"prefab/ui/DatingEventView\"];\n cc.resources.preload(PFList);\n }\n\n onEnterBackground() {\n super.onEnterBackground();\n if (this._subPresenters[this._currentTab])\n this._subPresenters[this._currentTab].onEnterBackground();\n }\n\n /**presenter进入前景 */\n async onEnterForeground() {\n super.onEnterForeground();\n if (this._subPresenters[this._currentTab]) {\n this._subPresenters[this._currentTab].onEnterForeground();\n this._subPresenters[this._currentTab].onEnterForeground();\n }\n if (PlotManager.getCurrentPlots()[MAIN_PLOT_INDEX].id === SpecialPlotId.ToBeContinued) {\n GameModelManager.registerAutoPopView(AutoPopViewType.ToBeContinued);\n }\n if (!GameConfig.isVerb) {\n GameModelManager.checkAutoPopView();\n }\n }\n\n onShow() {\n super.onShow();\n // this.checkTabGuide();\n }\n\n onTabClick = async (index: number, callback?: Function, isDot?: Boolean) => {\n if (!this._tabClickAble) {\n return;\n }\n this.dealTabGuide(index);\n let uuid = TabPresenterFactory[index].uuid;\n if (!GameModelManager.checkFuncUnloced(uuid)) {\n UIManager.showToast(GameModelManager.getLanguageTxt(GameTextData.GAME_TEXT_MAIN_FUNCTION_NOT_OPEN));\n return;\n }\n if (this._loadingTab) return;\n if (this._currentTab !== index) {\n if (this._subPresenters[this._currentTab])\n this._subPresenters[this._currentTab].view.hide();\n this._currentTab = index;\n this._viewProps.selectedTab = index;\n this._view.setProps(this._viewProps);\n if (index !== 2) {\n MainViewPresenter.tabIndex = index;\n }\n if (!this._subPresenters[this._currentTab]) {\n this._loadingTab = true;\n await createPresenter(TabPresenterFactory[this._currentTab]).then((presenter) => {\n this._subPresenters[this._currentTab] = presenter;\n presenter.open(this.view.getTabContentContainer(), undefined);\n setTimeout(() => {//延时等待618毫秒,View 中UI刷新\n this._loadingTab = false;\n }, this._tabToggleDelayTime);\n if (callback) {\n callback();\n }\n });\n } else {\n if (this._subPresenters[this._currentTab]) {\n this._subPresenters[this._currentTab].view.show();\n }\n if (callback) {\n callback();\n }\n }\n } else {\n if (callback) {\n callback();\n }\n }\n }\n\n dealTabGuide(index: number) {\n let r = GameRecord.globalVariables[\"guide_main_tab\" + index] as number;\n r = r === undefined ? GuideState.close : r;\n if (r === GuideState.Open) {\n GameModelManager.setGuideMainTabRecord(index, GuideState.Complete);\n }\n }\n\n checkTabGuide = () => {\n let check: boolean = false;\n if (!check) {\n return;\n }\n let index = GameModelManager.getMainTabGuideIndex();\n if (index !== -1) {\n //attention\n let redDotArr = [this._viewProps.messageRedDot, this._viewProps.datingEventRedDot, this._viewProps.discoverRedDot];\n if (!redDotArr[index] || this._currentTab === index) {\n return;\n }\n UIManager.popToPresenter(this);\n let m = this.view.getGuideTabParam(index);\n if (m) {\n let location: GuideLocation = index === MainTabs.datingEventTab ? GuideLocation.TabDate : GuideLocation.TabMsg;\n m.call = () => {\n this.onTabClick(index);\n this.view.hideClickAniByIndex(index);\n }\n UIManager.pushPresenter(GuideViewPresenter, m);\n }\n }\n }\n\n switchTab(tabIndex: number) {\n if (this._currentTab != tabIndex) {\n let prevIndex = this._currentTab;\n this._currentTab = tabIndex;\n this._viewProps.selectedTab = this._currentTab;\n\n this._view.setProps(this._viewProps);\n }\n }\n\n onAutoPopView = async (viewType: AutoPopViewType) => {\n switch (viewType) {\n case AutoPopViewType.ToBeContinued:\n {\n await showToBeContinue();\n }\n break;\n case AutoPopViewType.Notice:\n {\n UIManager.pushPresenter(NewNoticeViewPresenter, SourceView.MessageView);\n }\n break;\n case AutoPopViewType.PlotStop:\n {\n UIManager.pushPresenter(PlotStopViewPresenter, undefined);\n }\n break;\n }\n\n }\n\n onShowPlotBlocked = () => {\n GameModelManager.registerAutoPopView(AutoPopViewType.PlotStop);\n }\n\n onMainPlotChanged = async (pType: PlotSceneType, pId: number) => {\n if (!GameModelManager.isMainPlotSceneType() || ConfigManager.getConfig(dateSceneConfig, pId).DateType == DateType.Date_Sp) {\n return;\n }\n UIManager.popToPresenter(this);\n let comp = cc.director.getScene().getChildByName(\"Canvas\").getChildByName(\"VerbRoot\").getChildByName(\"VerbView\").getComponent(VerbView);\n if (this._hasItem && -1 !== this._itemId) {\n //加载图和组织物品掉落数据\n let showItemCfg: DeepReadonlyObject<IItemTbl> | undefined = undefined;\n let itemSpriteFrame: cc.SpriteFrame | undefined = undefined;\n showItemCfg = this.getShowItemCfg(this._itemId);\n if (showItemCfg) {\n let path: string = GameConstData.GAME_CONST_ITEM_BIG_SPR_DIR + showItemCfg.icon;\n itemSpriteFrame = await ResUtils.loadRes(path, cc.SpriteFrame);\n comp.setItemDropData(itemSpriteFrame, showItemCfg);\n this._itemId = -1;\n this._hasItem = false;\n }\n }\n switch (pType) {\n case PlotSceneType.Message:\n {\n this.onTabClick(MainTabs.messageTab, () => {\n this._subPresenters[this._currentTab].onShow();\n comp.toChat({ title: \"\", desc: \"来电了!!\" });\n setTimeout(() => {\n GameModelManager.ForceClickDataReady.emit();\n GameModelManager.ForceClickMsgItem.emit(pId);\n }, 500);\n });\n }\n break;\n case PlotSceneType.DatingEvent:\n {\n let cfgs = ConfigManager.getAllConfig(dateSceneConfig);\n let ids: string[] = [];\n for (const id in cfgs) {\n if (cfgs[id].DateType == DateType.Date_Normal) {\n ids.push(id);\n }\n }\n let plotIds: number[] = [];\n let models = GameModelManager.getMainDatingEventScenesModel();\n for (let i = 0; i < models.length; i++) {\n plotIds.push(models[i].id);\n }\n let index = plotIds.indexOf(pId);\n let title = \"第\" + (plotIds.length) + \"章:\";\n let cfg = ConfigManager.getConfig(dateSceneConfig, pId);\n let desc = cfg && cfg.name ? GameModelManager.getConfigLanguageTxt(cfg.name) : \"\";\n comp.toDating(() => {\n AudioManager.playEffect('verb');\n this.onTabClick(MainTabs.datingEventTab, () => {\n GameModelManager.ForceClickDataReady.emit();\n GameModelManager.ForceClickDatingItem.emit(pId);\n })\n this.view.hideClickAniByIndex(MainTabs.datingEventTab);\n }, { title: title, desc: desc })\n }\n break;\n }\n }\n\n getShowItemCfg(itemId: number): DeepReadonlyObject<IItemTbl> | undefined {\n let cfg: DeepReadonlyObject<IItemTbl> | undefined = undefined;\n if (itemId) {\n cfg = ConfigManager.getConfig(itemTbl, itemId);\n }\n return cfg;\n }\n\n onUnlockItem = (itemId: number) => {\n let unlockItems = UnlockItemModelManager.unlockItems;\n let isNew = unlockItems.indexOf(itemId) == -1;\n if (isNew) {\n this._itemId = itemId;\n this._hasItem = true;\n //写存档+组织数据并派发\n UnlockItemModelManager.saveItemIdToGameRecord(itemId);\n }\n }\n\n onRefreshAllStatus = async () => {\n this.checkRedDot(PlotManager.getCurrentPlots());\n\n GameConfig.showToBeContinue = false;\n let needEnterSpecialDatingScene = this.checkIsNeedToEnterSpecialDatingScene();\n // check tab guide\n // this.checkTabGuide();\n if (needEnterSpecialDatingScene) {\n GameConfig.isVerb = true;\n this.enterSpecialEventScene();\n this._currentTab = MainTabs.datingEventTab;\n this._viewProps.selectedTab = MainTabs.datingEventTab;\n } else {\n GameModelManager.checkAutoPopView();\n }\n this._tabClickAble = true\n }\n\n /**\n * 卧室返回点击UI事件\n * @param index 返回具体tabIndex\n */\n onJumpToViewInGame = (index: PageIndex) => {\n let tab = MainTabs.messageTab;\n switch (index) {\n case PageIndex.MessageView:\n tab = MainTabs.messageTab\n this._view.onTabButtonClick(null, `${tab}`);\n break;\n case PageIndex.DateEventView:\n tab = MainTabs.datingEventTab\n this._view.onTabButtonClick(null, `${tab}`);\n break;\n case PageIndex.ExtraPlotView:\n tab = MainTabs.datingEventTab\n this._view.onTabButtonClick(null, `${tab}`);\n UIManager.pushPresenter(ExtraPlotViewPresenter, undefined);\n break;\n default:\n console.error(\"The pageIndex is invalid.\");\n UIManager.showToast(\"无效的页面跳转\");\n break;\n }\n }\n}"]}
\ No newline at end of file
{"version":3,"sources":["assets/script/game/ui/presenter/MainViewPresenter.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import { ConfigManager } from \"simba-config-manager\";\nimport { GameRecord, PlotManager, ReadonlyPlots, SpecialPlotId } from \"../../../avg/AVG\";\nimport { createPresenter, Presenter } from \"../../../common/classbase/PresenterBase\";\nimport { View } from \"../../../common/classbase/ViewBase\";\nimport { GameTextData } from \"../../../common/gameplay/gamedata/GameTextData\";\nimport { UIManager } from \"../../../common/gameplay/managers/UIManager\";\nimport { dateSceneConfig } from \"../../../config/DateSceneConfig\";\nimport { AutoPopViewType, GuideLocation, GuideOperationType, GuideState, MainTabs, PlotSceneType } from \"../../Enums\";\nimport GameDotMgr from \"../../GameDotMgr\";\nimport { DatingEventStatus } from \"../../model/DatingEventSceneModel\";\nimport { GameModelManager } from \"../../model/GameModelManager\";\nimport { RegPresenter } from \"../PresenterCCViewFactory\";\nimport VerbView from \"../VerbView\";\nimport { showToBeContinue } from \"../view/impl/AlertToBeContinueImpl\";\nimport { MainView, MainViewProps, MainViewType } from \"../view/type/MainView\";\nimport DatingEventViewPresenter from \"./DatingEventViewPresenter\";\nimport { DatingScenePresenter } from \"./DatingScenePresenter\";\nimport DebugViewPresenter from \"./DebugViewPresenter\";\nimport DiscoverViewPresenter from \"./DiscoverViewPresenter\";\nimport GuideViewPresenter from \"./GuideViewPresenter\";\nimport MessageViewPresenter from \"./MessageViewPresenter\";\nimport NoticeViewPresenter from \"./NoticeViewPresenter\";\nimport PlotStopViewPresenter from \"./PlotStopViewPresenter\";\nimport { AudioManager } from \"simba-cc-audio-manager\";\nimport { DeepReadonlyObject } from \"simba-utils\";\nimport { ResUtils } from \"simba-cc-resutils\";\nimport { GameConstData } from \"../../../common/gameplay/gamedata/GameConstData\";\nimport { UnlockItemModelManager } from \"../../model/UnlockItemModelManager\";\nimport { IItemTbl, itemTbl } from \"../../../config/ItemTbl\";\nimport { channel, GameConfig } from \"../../../GameConfig\";\nimport { HttpClient } from \"simba-httpclient\";\nimport { DateType, PageIndex } from \"../../../avg/EditorEnums\";\nimport NewNoticeViewPresenter from \"./notice/NewNoticeViewPresenter\";\nimport { SourceView } from \"../view/type/notice/NewNoticeView\";\nimport ExtraPlotViewPresenter from \"./ExtraPlotViewPresenter\";\nimport { SDK } from \"simba-sdk\";\n\nconst TabPresenterFactory: ({ new(): Presenter } & { uuid: string })[] = [\n MessageViewPresenter,\n DatingEventViewPresenter,\n DiscoverViewPresenter\n];\n/**主线剧情的下标 */\nconst MAIN_PLOT_INDEX: number = 0;\n@RegPresenter(MainViewType)\nexport default class MainViewPresenter extends Presenter<undefined, MainView> {\n static uuid = \"MainViewPresenter\";\n private _subPresenters: Presenter<any, View>[] = [];\n private _currentTab = 0;\n private _viewProps: MainViewProps;\n private _loadingTab = false;\n private readonly _tabToggleDelayTime = 618;\n private _tabClickAble: boolean = false;\n\n private _itemId: number = -1;\n private _hasItem: boolean = false;\n public static tabIndex: number = -1;\n\n constructor() {\n super();\n this._viewProps = {\n selectedTab: 0,\n messageRedDot: false,\n datingEventRedDot: false,\n discoverRedDot: false,\n onTabClick: this.onTabClick,\n onDebugClick: this.onDebugClickCallback,\n };\n }\n\n onDebugClickCallback = () => {\n UIManager.pushPresenter(DebugViewPresenter, undefined);\n }\n\n onGoToShopClickCallback = () => {\n GameDotMgr.getInstance().dotClickUI(\"shop_btn_MainView\");\n if (channel == \"wechat\") {\n // GameCenter.getInstance().openSubProgram(GameConfig.youZanShopAppId);\n let link = GameModelManager.getYouZanShopUrlByType(8);\n if (link) {\n SDK.openProgramV2(GameConfig.youZanShopAppId, link);\n }\n } else if (channel == \"android\") {\n let link = GameModelManager.getTaoBaoShopUrlByType(8);\n if (link) {\n GameModelManager.jumpToTaobaoShop(link);\n }\n } else {\n UIManager.showToast(\"该功能在当前平台不可使用\");\n }\n }\n\n onCommonProblemClickCallback = async () => {\n try {\n let resStr = await new HttpClient(GameConfig.commonProblemConfigUrl).get() as string;\n let res = JSON.parse(resStr);\n if (res) {\n UIManager.pushPresenter(NoticeViewPresenter, {\n title: res.title,\n content: res.content\n });\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n checkRedDot = (plots: ReadonlyPlots) => {\n this._viewProps.messageRedDot = plots[MAIN_PLOT_INDEX].plotSceneType === PlotSceneType.Message || plots[MAIN_PLOT_INDEX].plotSceneType === PlotSceneType.PhoneCall;\n this._viewProps.datingEventRedDot = false;\n this._viewProps.datingEventRedDot = plots && (plots[0].plotSceneType === PlotSceneType.DatingEvent && (plots[0].id !== SpecialPlotId.ToBeContinued && plots[0].id !== SpecialPlotId.End));\n this.view.setProps(this._viewProps);\n if (plots[MAIN_PLOT_INDEX] && plots[MAIN_PLOT_INDEX].plotSceneType === PlotSceneType.BlockPlot) {\n GameModelManager.dealBlockedPlot();\n } else {\n let change = GameModelManager.isChangePlotSceneType();\n if (change) {\n let p = plots[MAIN_PLOT_INDEX];\n let isSpecial = p.id === SpecialPlotId.End || p.id === SpecialPlotId.ToBeContinued;\n if (!isSpecial) {\n this.onMainPlotChanged(p.plotSceneType, p.plotSceneTypeId);\n GameModelManager.setIsChangePlotSceneType(false);\n }\n }\n }\n }\n\n async start() { // 开始游戏\n this._subPresenters[0] = await createPresenter(TabPresenterFactory[0]);\n MainViewPresenter.tabIndex = 0;\n let viewContainer = this._view.getTabContentContainer();\n this._subPresenters[0].open(viewContainer, undefined);\n this.dealTabGuide(MainTabs.messageTab);\n this._viewProps.selectedTab = MainTabs.messageTab;\n\n this._disposable.add(GameModelManager.ShowPlotBlocked.on(this.onShowPlotBlocked));\n this._disposable.add(GameModelManager.AutoPopView.on(this.onAutoPopView));\n this._disposable.add(GameModelManager.UnlockItem.on(this.onUnlockItem));\n\n this._disposable.add(GameModelManager.RefreshAllStatus.on(this.onRefreshAllStatus));\n this._disposable.add(GameModelManager.JumpToViewInGame.on(this.onJumpToViewInGame));\n\n\n this.checkRedDot(PlotManager.getCurrentPlots());\n PlotManager.PlotStartEvent.on(this.checkRedDot);\n let needEnterSpecialDatingScene = this.checkIsNeedToEnterSpecialDatingScene();\n // check tab guide\n // this.checkTabGuide();\n if (needEnterSpecialDatingScene) {\n GameConfig.isVerb = true;\n this.enterSpecialEventScene();\n this._currentTab = MainTabs.datingEventTab;\n this._viewProps.selectedTab = MainTabs.datingEventTab;\n }\n this._tabClickAble = true;\n //进入主界面更新红点状态\n setTimeout(() => {\n //关闭等待界面\n this.view.showWaitingView(false);\n //开始弹起自动窗口\n if (PlotManager.getCurrentPlots()[MAIN_PLOT_INDEX].id === SpecialPlotId.ToBeContinued) {\n GameModelManager.registerAutoPopView(AutoPopViewType.ToBeContinued);\n }\n let autoShowNotice = GameModelManager.getAutoShowNotice();\n if (autoShowNotice) {\n GameModelManager.registerAutoPopView(AutoPopViewType.Notice);\n }\n let unlockItems = UnlockItemModelManager.unlockItems;\n if (unlockItems.indexOf(4) == -1) {\n GameModelManager.registerAutoPopView(AutoPopViewType.NoteBook);\n }\n if (!needEnterSpecialDatingScene) {\n GameModelManager.checkAutoPopView();\n }\n }, 2000);\n }\n\n /**\n * 检查新手教程是否完成,当前新手教程完成的判定是完成第一章\n * @returns \n */\n checkNoviceTutorialOver(): boolean {\n let models = GameModelManager.getMainDatingEventScenesModel();\n for (let i = 0; i < models.length; i++) {\n if (models[i].status == 4) {\n return true;\n }\n }\n return false;\n }\n\n async enterSpecialEventScene() {\n let arr = GameModelManager.getMainDatingEventScenesModel();\n UIManager.pushPresenter(DatingScenePresenter, arr[0], true);\n }\n\n checkIsNeedToEnterSpecialDatingScene() {\n let arr = GameModelManager.getMainDatingEventScenesModel();\n let need = arr && arr.length === 1 && arr[0].status !== DatingEventStatus.Completed;\n return need;\n }\n\n onMainTabForceClick = (param: { index: number, pureClick: boolean, propId?: number }) => {\n UIManager.popToPresenter(this);\n let index = param.index;\n this.onTabClick(index);\n }\n\n onClose() {\n super.onClose();\n UIManager.popToPresenter(this);\n }\n\n onOpen() {\n super.onOpen(undefined);\n // this.perloadPrefab();\n // this.discoverInit();\n }\n\n discoverInit() {\n GameRecord.onGlobalVariableChange(\"red_pot_\" + DiscoverViewPresenter.uuid, () => {\n this._viewProps.discoverRedDot = GameModelManager.checkRedPot(DiscoverViewPresenter.uuid);\n this.view.setProps(this._viewProps);\n });\n this._viewProps.discoverRedDot = GameModelManager.checkRedPot(DiscoverViewPresenter.uuid);\n this.view.setProps(this._viewProps);\n }\n\n perloadPrefab() {\n let PFList = [\"prefab/ui/DatingEventView\"];\n cc.resources.preload(PFList);\n }\n\n onEnterBackground() {\n super.onEnterBackground();\n if (this._subPresenters[this._currentTab])\n this._subPresenters[this._currentTab].onEnterBackground();\n }\n\n /**presenter进入前景 */\n async onEnterForeground() {\n super.onEnterForeground();\n if (this._subPresenters[this._currentTab]) {\n this._subPresenters[this._currentTab].onEnterForeground();\n this._subPresenters[this._currentTab].onEnterForeground();\n }\n if (PlotManager.getCurrentPlots()[MAIN_PLOT_INDEX].id === SpecialPlotId.ToBeContinued) {\n GameModelManager.registerAutoPopView(AutoPopViewType.ToBeContinued);\n }\n if (!GameConfig.isVerb) {\n GameModelManager.checkAutoPopView();\n }\n }\n\n onShow() {\n super.onShow();\n // this.checkTabGuide();\n }\n\n onTabClick = async (index: number, callback?: Function, isDot?: Boolean) => {\n if (!this._tabClickAble) {\n return;\n }\n this.dealTabGuide(index);\n let uuid = TabPresenterFactory[index].uuid;\n if (!GameModelManager.checkFuncUnloced(uuid)) {\n UIManager.showToast(GameModelManager.getLanguageTxt(GameTextData.GAME_TEXT_MAIN_FUNCTION_NOT_OPEN));\n return;\n }\n if (this._loadingTab) return;\n if (this._currentTab !== index) {\n if (this._subPresenters[this._currentTab])\n this._subPresenters[this._currentTab].view.hide();\n this._currentTab = index;\n this._viewProps.selectedTab = index;\n this._view.setProps(this._viewProps);\n if (index !== 2) {\n MainViewPresenter.tabIndex = index;\n }\n if (!this._subPresenters[this._currentTab]) {\n this._loadingTab = true;\n await createPresenter(TabPresenterFactory[this._currentTab]).then((presenter) => {\n this._subPresenters[this._currentTab] = presenter;\n presenter.open(this.view.getTabContentContainer(), undefined);\n setTimeout(() => {//延时等待618毫秒,View 中UI刷新\n this._loadingTab = false;\n }, this._tabToggleDelayTime);\n if (callback) {\n callback();\n }\n });\n } else {\n if (this._subPresenters[this._currentTab]) {\n this._subPresenters[this._currentTab].view.show();\n }\n if (callback) {\n callback();\n }\n }\n } else {\n if (callback) {\n callback();\n }\n }\n }\n\n dealTabGuide(index: number) {\n let r = GameRecord.globalVariables[\"guide_main_tab\" + index] as number;\n r = r === undefined ? GuideState.close : r;\n if (r === GuideState.Open) {\n GameModelManager.setGuideMainTabRecord(index, GuideState.Complete);\n }\n }\n\n checkTabGuide = () => {\n let check: boolean = false;\n if (!check) {\n return;\n }\n let index = GameModelManager.getMainTabGuideIndex();\n if (index !== -1) {\n //attention\n let redDotArr = [this._viewProps.messageRedDot, this._viewProps.datingEventRedDot, this._viewProps.discoverRedDot];\n if (!redDotArr[index] || this._currentTab === index) {\n return;\n }\n UIManager.popToPresenter(this);\n let m = this.view.getGuideTabParam(index);\n if (m) {\n let location: GuideLocation = index === MainTabs.datingEventTab ? GuideLocation.TabDate : GuideLocation.TabMsg;\n m.call = () => {\n this.onTabClick(index);\n this.view.hideClickAniByIndex(index);\n }\n UIManager.pushPresenter(GuideViewPresenter, m);\n }\n }\n }\n\n switchTab(tabIndex: number) {\n if (this._currentTab != tabIndex) {\n let prevIndex = this._currentTab;\n this._currentTab = tabIndex;\n this._viewProps.selectedTab = this._currentTab;\n\n this._view.setProps(this._viewProps);\n }\n }\n\n onAutoPopView = async (viewType: AutoPopViewType) => {\n switch (viewType) {\n case AutoPopViewType.ToBeContinued:\n {\n await showToBeContinue();\n }\n break;\n case AutoPopViewType.Notice:\n {\n UIManager.pushPresenter(NewNoticeViewPresenter, SourceView.MessageView);\n }\n break;\n case AutoPopViewType.PlotStop:\n {\n UIManager.pushPresenter(PlotStopViewPresenter, undefined);\n }\n break;\n }\n\n }\n\n onShowPlotBlocked = () => {\n GameModelManager.registerAutoPopView(AutoPopViewType.PlotStop);\n }\n\n onMainPlotChanged = async (pType: PlotSceneType, pId: number) => {\n if (!GameModelManager.isMainPlotSceneType() || ConfigManager.getConfig(dateSceneConfig, pId).DateType == DateType.Date_Sp) {\n return;\n }\n UIManager.popToPresenter(this);\n let comp = cc.director.getScene().getChildByName(\"Canvas\").getChildByName(\"VerbRoot\").getChildByName(\"VerbView\").getComponent(VerbView);\n if (this._hasItem && -1 !== this._itemId) {\n //加载图和组织物品掉落数据\n let showItemCfg: DeepReadonlyObject<IItemTbl> | undefined = undefined;\n let itemSpriteFrame: cc.SpriteFrame | undefined = undefined;\n showItemCfg = this.getShowItemCfg(this._itemId);\n if (showItemCfg) {\n let path: string = GameConstData.GAME_CONST_ITEM_BIG_SPR_DIR + showItemCfg.icon;\n itemSpriteFrame = await ResUtils.loadRes(path, cc.SpriteFrame);\n comp.setItemDropData(itemSpriteFrame, showItemCfg);\n this._itemId = -1;\n this._hasItem = false;\n }\n }\n switch (pType) {\n case PlotSceneType.Message:\n {\n this.onTabClick(MainTabs.messageTab, () => {\n this._subPresenters[this._currentTab].onShow();\n comp.toChat({ title: \"\", desc: \"来电了!!\" });\n setTimeout(() => {\n GameModelManager.ForceClickDataReady.emit();\n GameModelManager.ForceClickMsgItem.emit(pId);\n }, 500);\n });\n }\n break;\n case PlotSceneType.DatingEvent:\n {\n let cfgs = ConfigManager.getAllConfig(dateSceneConfig);\n let ids: string[] = [];\n for (const id in cfgs) {\n if (cfgs[id].DateType == DateType.Date_Normal) {\n ids.push(id);\n }\n }\n let plotIds: number[] = [];\n let models = GameModelManager.getMainDatingEventScenesModel();\n for (let i = 0; i < models.length; i++) {\n plotIds.push(models[i].id);\n }\n let index = plotIds.indexOf(pId);\n let title = \"第\" + (plotIds.length) + \"章:\";\n let cfg = ConfigManager.getConfig(dateSceneConfig, pId);\n let desc = cfg && cfg.name ? GameModelManager.getConfigLanguageTxt(cfg.name) : \"\";\n comp.toDating(() => {\n AudioManager.playEffect('verb');\n this.onTabClick(MainTabs.datingEventTab, () => {\n GameModelManager.ForceClickDataReady.emit();\n GameModelManager.ForceClickDatingItem.emit(pId);\n })\n this.view.hideClickAniByIndex(MainTabs.datingEventTab);\n }, { title: title, desc: desc })\n }\n break;\n }\n }\n\n getShowItemCfg(itemId: number): DeepReadonlyObject<IItemTbl> | undefined {\n let cfg: DeepReadonlyObject<IItemTbl> | undefined = undefined;\n if (itemId) {\n cfg = ConfigManager.getConfig(itemTbl, itemId);\n }\n return cfg;\n }\n\n onUnlockItem = (itemId: number) => {\n let unlockItems = UnlockItemModelManager.unlockItems;\n let isNew = unlockItems.indexOf(itemId) == -1;\n if (isNew) {\n this._itemId = itemId;\n this._hasItem = true;\n //写存档+组织数据并派发\n UnlockItemModelManager.saveItemIdToGameRecord(itemId);\n }\n }\n\n onRefreshAllStatus = async () => {\n this.checkRedDot(PlotManager.getCurrentPlots());\n\n GameConfig.showToBeContinue = false;\n let needEnterSpecialDatingScene = this.checkIsNeedToEnterSpecialDatingScene();\n // check tab guide\n // this.checkTabGuide();\n if (needEnterSpecialDatingScene) {\n GameConfig.isVerb = true;\n this.enterSpecialEventScene();\n this._currentTab = MainTabs.datingEventTab;\n this._viewProps.selectedTab = MainTabs.datingEventTab;\n } else {\n GameModelManager.checkAutoPopView();\n }\n this._tabClickAble = true\n }\n\n /**\n * 卧室返回点击UI事件\n * @param index 返回具体tabIndex\n */\n onJumpToViewInGame = (index: PageIndex) => {\n let tab = MainTabs.messageTab;\n switch (index) {\n case PageIndex.MessageView:\n tab = MainTabs.messageTab\n this._view.onTabButtonClick(null, `${tab}`);\n break;\n case PageIndex.DateEventView:\n tab = MainTabs.datingEventTab\n this._view.onTabButtonClick(null, `${tab}`);\n break;\n case PageIndex.ExtraPlotView:\n tab = MainTabs.datingEventTab\n this._view.onTabButtonClick(null, `${tab}`);\n UIManager.pushPresenter(ExtraPlotViewPresenter, undefined);\n break;\n default:\n console.error(\"The pageIndex is invalid.\");\n UIManager.showToast(\"无效的页面跳转\");\n break;\n }\n }\n}"]}
\ No newline at end of file
{"version":3,"sources":["assets/script/game/ui/view/type/DatingEventSubview.ts"],"names":[],"mappings":";;;;;;;AAoDa,QAAA,sBAAsB,GAAG,oBAAoB,CAAC","file":"","sourceRoot":"/","sourcesContent":["import { ListItemProps, ListView, ListViewProps } from \"../../baseview/ListView\";\nimport { PureSubview } from \"../../../../common/classbase/ViewBase\";\nimport { DatingEventStatus } from \"../../../model/DatingEventSceneModel\";\nimport { DatePrefabDirectType, StepType } from \"../../../Enums\";\n\nexport interface DatingEventItemProps extends ListItemProps {\n title: string;\n // date: string;\n // time: string;\n status: DatingEventStatus;\n // lockText?: string;\n coverImage: string;\n portraitImage?: string;\n // lineStyle: \"none\" | 0 | 1;\n // progress: number;\n // showItemClear: boolean;\n // showProgress: boolean;\n // reviewCostNum: number;\n itype: DatePrefabDirectType;\n}\ntype OptionChapter = (stepType: StepType) => void;\nexport interface DatingEventSubviewProps extends ListViewProps<DatingEventItemProps> {\n showContinue: boolean;\n chapterName: string;\n showLeft: boolean;\n showRight: boolean;\n showChapterClear: boolean;\n onOptionChapter: OptionChapter;\n chapterIndex: number;\n onScrollBegin: () => void;\n onScrollEnd: () => void;\n onLeftButtonClickCallback: () => void;\n onRightButtonClickCallback: () => void;\n onNameButtonClickCallback: () => void;\n onExtraPlotButtonClickCallback: () => void;\n onCloseSectionViewCallBack: () => void;\n}\n\nexport interface GetListItemNode {\n getItemNode: (k: string) => cc.Node | undefined;\n // setCurrEventId: (id: number) => void;\n getLeftButton: () => cc.Button;\n getNameButton: () => cc.Button;\n getRightButton: () => cc.Button;\n getScrollViewRoot: () => cc.Node;\n getScrollViewContent: () => cc.Node;\n getSectionBtn: () => cc.Prefab;\n getExtraPlotButton: () => cc.Node;\n}\n\nexport type DatingEventSubview = ListView & PureSubview<DatingEventSubviewProps> & GetListItemNode;\n\nexport const DatingEventSubviewType = \"DatingEventSubview\";"]}
\ No newline at end of file
{"version":3,"sources":["assets/script/game/ui/view/type/DatingEventSubview.ts"],"names":[],"mappings":";;;;;;;AAmDa,QAAA,sBAAsB,GAAG,oBAAoB,CAAC","file":"","sourceRoot":"/","sourcesContent":["import { ListItemProps, ListView, ListViewProps } from \"../../baseview/ListView\";\nimport { PureSubview } from \"../../../../common/classbase/ViewBase\";\nimport { DatingEventStatus } from \"../../../model/DatingEventSceneModel\";\nimport { DatePrefabDirectType, StepType } from \"../../../Enums\";\n\nexport interface DatingEventItemProps extends ListItemProps {\n title: string;\n // date: string;\n // time: string;\n status: DatingEventStatus;\n // lockText?: string;\n coverImage: string;\n portraitImage?: string;\n // lineStyle: \"none\" | 0 | 1;\n // progress: number;\n // showItemClear: boolean;\n // showProgress: boolean;\n // reviewCostNum: number;\n itype: DatePrefabDirectType;\n}\ntype OptionChapter = (stepType: StepType) => void;\nexport interface DatingEventSubviewProps extends ListViewProps<DatingEventItemProps> {\n showContinue: boolean;\n chapterName: string;\n showLeft: boolean;\n showRight: boolean;\n showChapterClear: boolean;\n onOptionChapter: OptionChapter;\n chapterIndex: number;\n onScrollBegin: () => void;\n onScrollEnd: () => void;\n onLeftButtonClickCallback: () => void;\n onRightButtonClickCallback: () => void;\n onNameButtonClickCallback: () => void;\n onCloseSectionViewCallBack: () => void;\n}\n\nexport interface GetListItemNode {\n getItemNode: (k: string) => cc.Node | undefined;\n // setCurrEventId: (id: number) => void;\n getLeftButton: () => cc.Button;\n getNameButton: () => cc.Button;\n getRightButton: () => cc.Button;\n getScrollViewRoot: () => cc.Node;\n getScrollViewContent: () => cc.Node;\n getSectionBtn: () => cc.Prefab;\n getExtraPlotButton: () => cc.Node;\n}\n\nexport type DatingEventSubview = ListView & PureSubview<DatingEventSubviewProps> & GetListItemNode;\n\nexport const DatingEventSubviewType = \"DatingEventSubview\";"]}
\ No newline at end of file
......@@ -48,7 +48,6 @@ let NewNoticeViewPresenter = /** @class */ (() => {
this.onCloseButtonClickCalback = () => {
if (this._canClose) {
this.checkTipsToggleState();
GameModelManager_1.GameModelManager.setNoticeReaded(true);
clearTimeout(this._closeTimeTicker);
this.view.close();
}
......@@ -81,8 +80,6 @@ let NewNoticeViewPresenter = /** @class */ (() => {
initView() {
//重置可关闭状态为false
this._canClose = false;
//根据是否是第一次弹起紧急公告判断延迟时间
//this._delayTime = GameModelManager.getNoticeReaded() ? 0 : 3;
this._delayTime = 0;
//重置提示文本状态
this.view.getCloseTipsLabel().string = "";
......
{"version":3,"sources":["assets/script/game/ui/presenter/notice/NewNoticeViewPresenter.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import { ConfigManager } from \"simba-config-manager\";\r\nimport { SDK } from \"simba-sdk\";\r\nimport { ActicityType, PageIndex } from \"../../../../avg/EditorEnums\";\r\nimport { Presenter } from \"../../../../common/classbase/PresenterBase\";\r\nimport { UIManager } from \"../../../../common/gameplay/managers/UIManager\";\r\nimport { taoBaoShopUrlConfig } from \"../../../../config/TaoBaoShopUrlConfig\";\r\nimport { channel, GameConfig } from \"../../../../GameConfig\";\r\nimport { ActivitiesConfig, ActivitiesItemModelManager } from \"../../../model/ActivitiesItemModelManager\";\r\nimport { GameModelManager } from \"../../../model/GameModelManager\";\r\nimport { HttpRequests } from \"../../../network/HttpRequests\";\r\nimport ActivitiesNoticeItem from \"../../ActivitiesNoticeItem\";\r\nimport { RegPresenter } from \"../../PresenterCCViewFactory\";\r\nimport { NewNoticeViewType, NewNoticeView, NewNoticeViewProps, NoticeType, SourceView } from \"../../view/type/notice/NewNoticeView\";\r\n\r\n@RegPresenter(NewNoticeViewType)\r\nexport default class NewNoticeViewPresenter extends Presenter<SourceView, NewNoticeView>{\r\n static uuid = \"NewNoticeViewPresenter\"\r\n private _viewProps: NewNoticeViewProps;\r\n private _noticeType: NoticeType = NoticeType.SystemNotice;\r\n private _delayTime: number = 0;\r\n private _closeTimeTicker: number = -1;\r\n private _canClose: boolean = false;\r\n\r\n constructor() {\r\n super();\r\n this._viewProps = {\r\n sourceView: SourceView.MessageView,\r\n onNoticeButtonClickCallback: this.onNoticeButtonClickCallback,\r\n onCloseButtonClickCalback: this.onCloseButtonClickCalback,\r\n };\r\n }\r\n\r\n onOpen(source: SourceView) {\r\n super.onOpen(source);\r\n this._viewProps.sourceView = source;\r\n this.view.setProps(this._viewProps);\r\n this.onShow();\r\n }\r\n\r\n onShow() {\r\n super.onShow();\r\n this.initView();\r\n }\r\n\r\n onEnterBackground() {\r\n super.onEnterBackground();\r\n }\r\n\r\n onEnterForeground() {\r\n super.onEnterForeground();\r\n }\r\n\r\n onClose() {\r\n super.onClose();\r\n }\r\n\r\n initView() {\r\n //重置可关闭状态为false\r\n this._canClose = false;\r\n //根据是否是第一次弹起紧急公告判断延迟时间\r\n //this._delayTime = GameModelManager.getNoticeReaded() ? 0 : 3;\r\n this._delayTime = 0;\r\n //重置提示文本状态\r\n this.view.getCloseTipsLabel().string = \"\";\r\n //初始化公告类型\r\n if (channel == \"android\") {\r\n this._noticeType = NoticeType.ActvitiesNotice;\r\n } else {\r\n this._noticeType = NoticeType.SystemNotice;\r\n }\r\n //根据存档初始化“今日不再提示”的选择框\r\n let autoShow = GameModelManager.getAutoShowNotice();\r\n this.view.getTipsToggle().isChecked = !autoShow;\r\n //初始化公告按钮状态和公告内容\r\n this.setNoticeState();\r\n this.setNoticeContent();\r\n //刷新活动公告按钮的红点状态\r\n this.refreshActivitiesButtonRedDot();\r\n //开启关闭倒计时\r\n this.startTimeTicker();\r\n }\r\n\r\n /**\r\n * 设置公告按钮状态和公告内容显隐\r\n */\r\n setNoticeState() {\r\n let nodes = this.view.getNoticeNodes();\r\n let buttons = this.view.getNoticeButtons();\r\n switch (this._noticeType) {\r\n case NoticeType.SystemNotice://系统公告\r\n nodes[NoticeType.SystemNotice].active = true;\r\n nodes[NoticeType.ActvitiesNotice].active = false;\r\n buttons[NoticeType.SystemNotice].node.getChildByName(\"Background\").getComponent(cc.Sprite).spriteFrame = this.view.getButtonSpriteFrames()[1];\r\n buttons[NoticeType.ActvitiesNotice].node.getChildByName(\"Background\").getComponent(cc.Sprite).spriteFrame = this.view.getButtonSpriteFrames()[2];\r\n break;\r\n case NoticeType.ActvitiesNotice://活动公告\r\n nodes[NoticeType.SystemNotice].active = false;\r\n nodes[NoticeType.ActvitiesNotice].active = true;\r\n buttons[NoticeType.SystemNotice].node.getChildByName(\"Background\").getComponent(cc.Sprite).spriteFrame = this.view.getButtonSpriteFrames()[0];\r\n buttons[NoticeType.ActvitiesNotice].node.getChildByName(\"Background\").getComponent(cc.Sprite).spriteFrame = this.view.getButtonSpriteFrames()[3];\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * 设置公告内容\r\n */\r\n async setNoticeContent() {\r\n switch (this._noticeType) {\r\n case NoticeType.SystemNotice://系统公告\r\n HttpRequests.getNewNotice().then((res) => {\r\n if (res != null && res.length > 0) {\r\n this.view.getContentRichText().string = res[0].msg;\r\n } else {\r\n this.view.getContentRichText().string = \"<color=#FF0000>公告获取失败,请检查网络或稍后重试<color/>\";\r\n }\r\n });\r\n break;\r\n case NoticeType.ActvitiesNotice://活动公告\r\n this.view.getActivitiesContentNode().removeAllChildren();\r\n let configs = ActivitiesItemModelManager.getValidActivitiesConfigs();\r\n for (let i = 0; i < configs.length; i++) {\r\n if (!configs[i].canClick) {\r\n ActivitiesItemModelManager.setActivitiesReaded(configs[i].activityId);\r\n this.refreshActivitiesButtonRedDot();\r\n }\r\n let item = cc.instantiate(this.view.getActivitiesItemPrefab());\r\n item.getComponent(ActivitiesNoticeItem).setData(configs[i].activityId, configs[i].canClick, configs[i].describe, () => {\r\n //刷新活动列表和“活动公告”按钮的红点\r\n ActivitiesItemModelManager.setActivitiesReaded(configs[i].activityId);\r\n item.getComponent(ActivitiesNoticeItem).refreshRedDot();\r\n this.refreshActivitiesButtonRedDot();\r\n //执行活动逻辑\r\n this.executeActivitiesEvent(configs[i], this._viewProps.sourceView);\r\n });\r\n item.parent = this.view.getActivitiesContentNode();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * 检查“今日不再提示”单选框的选择状态\r\n */\r\n checkTipsToggleState() {\r\n let isChecked = this.view.getTipsToggle().isChecked;\r\n let autoShow = GameModelManager.getAutoShowNotice();\r\n if (autoShow !== !isChecked) {\r\n GameModelManager.setAutoShowNotice(!isChecked);\r\n }\r\n }\r\n\r\n /**\r\n * 刷新“活动公告”按钮的红点状态\r\n */\r\n refreshActivitiesButtonRedDot() {\r\n let buttons = this.view.getNoticeButtons();\r\n let configs = ActivitiesItemModelManager.getValidActivitiesConfigs();\r\n for (let i = 0; i < configs.length; i++) {\r\n let isReaded = ActivitiesItemModelManager.getActivitiesReaded(configs[i].activityId);\r\n if (!isReaded) {\r\n buttons[NoticeType.ActvitiesNotice].node.getChildByName(\"RedDot\").active = true;\r\n return;\r\n } else {\r\n buttons[NoticeType.ActvitiesNotice].node.getChildByName(\"RedDot\").active = false;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 根据活动配置处理活动事件\r\n * @param config 活动配置\r\n */\r\n executeActivitiesEvent(config: ActivitiesConfig, source: SourceView) {\r\n switch (config.activityTypeConfig.activityType) {\r\n case ActicityType.JumpToTaoBao:\r\n if (channel == \"wechat\") {\r\n // GameCenter.getInstance().openSubProgram(GameConfig.youZanShopAppId);\r\n if (config.activityTypeConfig.taobaoTempId) {\r\n let taobaoConfig = ConfigManager.getConfig(taoBaoShopUrlConfig, config.activityTypeConfig.taobaoTempId);\r\n SDK.openProgramV2(GameConfig.youZanShopAppId, taobaoConfig.youZanUrl);\r\n } else {\r\n console.error(\"The taobaoTempId is undefined.\");\r\n }\r\n } else if (channel == \"android\") {\r\n if (config.activityTypeConfig.taobaoTempId) {\r\n let taobaoConfig = ConfigManager.getConfig(taoBaoShopUrlConfig, config.activityTypeConfig.taobaoTempId);\r\n GameModelManager.jumpToTaobaoShop(taobaoConfig.websiteUrl);\r\n } else {\r\n console.error(\"The taobaoTempId is undefined.\");\r\n }\r\n } else {\r\n UIManager.showToast(\"该功能在当前平台不可使用\");\r\n }\r\n break;\r\n case ActicityType.PageInGame:\r\n let pageIndex: PageIndex = config.activityTypeConfig.pageIndex;\r\n if (pageIndex) {\r\n this.executePageInGameEvent(pageIndex, source);\r\n } else {\r\n console.error(\"The pageIndex is undefined.\");\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * 处理游戏内的活动事件\r\n * @param activityId 活动ID\r\n */\r\n executePageInGameEvent(pageIndex: PageIndex, source: SourceView) {\r\n switch (source) {\r\n case SourceView.MessageView:\r\n this.onCloseButtonClickCalback();\r\n GameModelManager.JumpToViewInGame.emit(pageIndex);\r\n break;\r\n case SourceView.SettingView:\r\n this.onCloseButtonClickCalback();\r\n GameModelManager.CloseSettingView.emit(pageIndex);\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * 开启可关闭定时器\r\n */\r\n startTimeTicker() {\r\n if (this._delayTime == 0) {\r\n this._canClose = true;\r\n this.view.getCloseTipsLabel().string = \"点击空白区域可关闭\";\r\n } else {\r\n this.view.getCloseTipsLabel().string = this._delayTime + \"秒后可关闭\";\r\n this._closeTimeTicker = window.setTimeout(() => {\r\n this._delayTime -= 1;\r\n this.startTimeTicker();\r\n }, 1000);\r\n }\r\n }\r\n\r\n /**\r\n * 公告按钮的点击事件\r\n * @param index 系统公告和活动公告的Index\r\n */\r\n onNoticeButtonClickCallback = (index: number) => {\r\n if (this._noticeType !== index) {\r\n this._noticeType = index;\r\n this.setNoticeState();\r\n this.setNoticeContent();\r\n }\r\n }\r\n\r\n /**\r\n * 关闭按钮的点击事件\r\n */\r\n onCloseButtonClickCalback = () => {\r\n if (this._canClose) {\r\n this.checkTipsToggleState();\r\n GameModelManager.setNoticeReaded(true);\r\n clearTimeout(this._closeTimeTicker);\r\n this.view.close();\r\n }\r\n }\r\n}"]}
\ No newline at end of file
{"version":3,"sources":["assets/script/game/ui/presenter/notice/NewNoticeViewPresenter.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import { ConfigManager } from \"simba-config-manager\";\r\nimport { SDK } from \"simba-sdk\";\r\nimport { ActicityType, PageIndex } from \"../../../../avg/EditorEnums\";\r\nimport { Presenter } from \"../../../../common/classbase/PresenterBase\";\r\nimport { UIManager } from \"../../../../common/gameplay/managers/UIManager\";\r\nimport { taoBaoShopUrlConfig } from \"../../../../config/TaoBaoShopUrlConfig\";\r\nimport { channel, GameConfig } from \"../../../../GameConfig\";\r\nimport { ActivitiesConfig, ActivitiesItemModelManager } from \"../../../model/ActivitiesItemModelManager\";\r\nimport { GameModelManager } from \"../../../model/GameModelManager\";\r\nimport { HttpRequests } from \"../../../network/HttpRequests\";\r\nimport ActivitiesNoticeItem from \"../../ActivitiesNoticeItem\";\r\nimport { RegPresenter } from \"../../PresenterCCViewFactory\";\r\nimport { NewNoticeViewType, NewNoticeView, NewNoticeViewProps, NoticeType, SourceView } from \"../../view/type/notice/NewNoticeView\";\r\n\r\n@RegPresenter(NewNoticeViewType)\r\nexport default class NewNoticeViewPresenter extends Presenter<SourceView, NewNoticeView>{\r\n static uuid = \"NewNoticeViewPresenter\"\r\n private _viewProps: NewNoticeViewProps;\r\n private _noticeType: NoticeType = NoticeType.SystemNotice;\r\n private _delayTime: number = 0;\r\n private _closeTimeTicker: number = -1;\r\n private _canClose: boolean = false;\r\n\r\n constructor() {\r\n super();\r\n this._viewProps = {\r\n sourceView: SourceView.MessageView,\r\n onNoticeButtonClickCallback: this.onNoticeButtonClickCallback,\r\n onCloseButtonClickCalback: this.onCloseButtonClickCalback,\r\n };\r\n }\r\n\r\n onOpen(source: SourceView) {\r\n super.onOpen(source);\r\n this._viewProps.sourceView = source;\r\n this.view.setProps(this._viewProps);\r\n this.onShow();\r\n }\r\n\r\n onShow() {\r\n super.onShow();\r\n this.initView();\r\n }\r\n\r\n onEnterBackground() {\r\n super.onEnterBackground();\r\n }\r\n\r\n onEnterForeground() {\r\n super.onEnterForeground();\r\n }\r\n\r\n onClose() {\r\n super.onClose();\r\n }\r\n\r\n initView() {\r\n //重置可关闭状态为false\r\n this._canClose = false;\r\n this._delayTime = 0;\r\n //重置提示文本状态\r\n this.view.getCloseTipsLabel().string = \"\";\r\n //初始化公告类型\r\n if (channel == \"android\") {\r\n this._noticeType = NoticeType.ActvitiesNotice;\r\n } else {\r\n this._noticeType = NoticeType.SystemNotice;\r\n }\r\n //根据存档初始化“今日不再提示”的选择框\r\n let autoShow = GameModelManager.getAutoShowNotice();\r\n this.view.getTipsToggle().isChecked = !autoShow;\r\n //初始化公告按钮状态和公告内容\r\n this.setNoticeState();\r\n this.setNoticeContent();\r\n //刷新活动公告按钮的红点状态\r\n this.refreshActivitiesButtonRedDot();\r\n //开启关闭倒计时\r\n this.startTimeTicker();\r\n }\r\n\r\n /**\r\n * 设置公告按钮状态和公告内容显隐\r\n */\r\n setNoticeState() {\r\n let nodes = this.view.getNoticeNodes();\r\n let buttons = this.view.getNoticeButtons();\r\n switch (this._noticeType) {\r\n case NoticeType.SystemNotice://系统公告\r\n nodes[NoticeType.SystemNotice].active = true;\r\n nodes[NoticeType.ActvitiesNotice].active = false;\r\n buttons[NoticeType.SystemNotice].node.getChildByName(\"Background\").getComponent(cc.Sprite).spriteFrame = this.view.getButtonSpriteFrames()[1];\r\n buttons[NoticeType.ActvitiesNotice].node.getChildByName(\"Background\").getComponent(cc.Sprite).spriteFrame = this.view.getButtonSpriteFrames()[2];\r\n break;\r\n case NoticeType.ActvitiesNotice://活动公告\r\n nodes[NoticeType.SystemNotice].active = false;\r\n nodes[NoticeType.ActvitiesNotice].active = true;\r\n buttons[NoticeType.SystemNotice].node.getChildByName(\"Background\").getComponent(cc.Sprite).spriteFrame = this.view.getButtonSpriteFrames()[0];\r\n buttons[NoticeType.ActvitiesNotice].node.getChildByName(\"Background\").getComponent(cc.Sprite).spriteFrame = this.view.getButtonSpriteFrames()[3];\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * 设置公告内容\r\n */\r\n async setNoticeContent() {\r\n switch (this._noticeType) {\r\n case NoticeType.SystemNotice://系统公告\r\n HttpRequests.getNewNotice().then((res) => {\r\n if (res != null && res.length > 0) {\r\n this.view.getContentRichText().string = res[0].msg;\r\n } else {\r\n this.view.getContentRichText().string = \"<color=#FF0000>公告获取失败,请检查网络或稍后重试<color/>\";\r\n }\r\n });\r\n break;\r\n case NoticeType.ActvitiesNotice://活动公告\r\n this.view.getActivitiesContentNode().removeAllChildren();\r\n let configs = ActivitiesItemModelManager.getValidActivitiesConfigs();\r\n for (let i = 0; i < configs.length; i++) {\r\n if (!configs[i].canClick) {\r\n ActivitiesItemModelManager.setActivitiesReaded(configs[i].activityId);\r\n this.refreshActivitiesButtonRedDot();\r\n }\r\n let item = cc.instantiate(this.view.getActivitiesItemPrefab());\r\n item.getComponent(ActivitiesNoticeItem).setData(configs[i].activityId, configs[i].canClick, configs[i].describe, () => {\r\n //刷新活动列表和“活动公告”按钮的红点\r\n ActivitiesItemModelManager.setActivitiesReaded(configs[i].activityId);\r\n item.getComponent(ActivitiesNoticeItem).refreshRedDot();\r\n this.refreshActivitiesButtonRedDot();\r\n //执行活动逻辑\r\n this.executeActivitiesEvent(configs[i], this._viewProps.sourceView);\r\n });\r\n item.parent = this.view.getActivitiesContentNode();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * 检查“今日不再提示”单选框的选择状态\r\n */\r\n checkTipsToggleState() {\r\n let isChecked = this.view.getTipsToggle().isChecked;\r\n let autoShow = GameModelManager.getAutoShowNotice();\r\n if (autoShow !== !isChecked) {\r\n GameModelManager.setAutoShowNotice(!isChecked);\r\n }\r\n }\r\n\r\n /**\r\n * 刷新“活动公告”按钮的红点状态\r\n */\r\n refreshActivitiesButtonRedDot() {\r\n let buttons = this.view.getNoticeButtons();\r\n let configs = ActivitiesItemModelManager.getValidActivitiesConfigs();\r\n for (let i = 0; i < configs.length; i++) {\r\n let isReaded = ActivitiesItemModelManager.getActivitiesReaded(configs[i].activityId);\r\n if (!isReaded) {\r\n buttons[NoticeType.ActvitiesNotice].node.getChildByName(\"RedDot\").active = true;\r\n return;\r\n } else {\r\n buttons[NoticeType.ActvitiesNotice].node.getChildByName(\"RedDot\").active = false;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 根据活动配置处理活动事件\r\n * @param config 活动配置\r\n */\r\n executeActivitiesEvent(config: ActivitiesConfig, source: SourceView) {\r\n switch (config.activityTypeConfig.activityType) {\r\n case ActicityType.JumpToTaoBao:\r\n if (channel == \"wechat\") {\r\n // GameCenter.getInstance().openSubProgram(GameConfig.youZanShopAppId);\r\n if (config.activityTypeConfig.taobaoTempId) {\r\n let taobaoConfig = ConfigManager.getConfig(taoBaoShopUrlConfig, config.activityTypeConfig.taobaoTempId);\r\n SDK.openProgramV2(GameConfig.youZanShopAppId, taobaoConfig.youZanUrl);\r\n } else {\r\n console.error(\"The taobaoTempId is undefined.\");\r\n }\r\n } else if (channel == \"android\") {\r\n if (config.activityTypeConfig.taobaoTempId) {\r\n let taobaoConfig = ConfigManager.getConfig(taoBaoShopUrlConfig, config.activityTypeConfig.taobaoTempId);\r\n GameModelManager.jumpToTaobaoShop(taobaoConfig.websiteUrl);\r\n } else {\r\n console.error(\"The taobaoTempId is undefined.\");\r\n }\r\n } else {\r\n UIManager.showToast(\"该功能在当前平台不可使用\");\r\n }\r\n break;\r\n case ActicityType.PageInGame:\r\n let pageIndex: PageIndex = config.activityTypeConfig.pageIndex;\r\n if (pageIndex) {\r\n this.executePageInGameEvent(pageIndex, source);\r\n } else {\r\n console.error(\"The pageIndex is undefined.\");\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * 处理游戏内的活动事件\r\n * @param activityId 活动ID\r\n */\r\n executePageInGameEvent(pageIndex: PageIndex, source: SourceView) {\r\n switch (source) {\r\n case SourceView.MessageView:\r\n this.onCloseButtonClickCalback();\r\n GameModelManager.JumpToViewInGame.emit(pageIndex);\r\n break;\r\n case SourceView.SettingView:\r\n this.onCloseButtonClickCalback();\r\n GameModelManager.CloseSettingView.emit(pageIndex);\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * 开启可关闭定时器\r\n */\r\n startTimeTicker() {\r\n if (this._delayTime == 0) {\r\n this._canClose = true;\r\n this.view.getCloseTipsLabel().string = \"点击空白区域可关闭\";\r\n } else {\r\n this.view.getCloseTipsLabel().string = this._delayTime + \"秒后可关闭\";\r\n this._closeTimeTicker = window.setTimeout(() => {\r\n this._delayTime -= 1;\r\n this.startTimeTicker();\r\n }, 1000);\r\n }\r\n }\r\n\r\n /**\r\n * 公告按钮的点击事件\r\n * @param index 系统公告和活动公告的Index\r\n */\r\n onNoticeButtonClickCallback = (index: number) => {\r\n if (this._noticeType !== index) {\r\n this._noticeType = index;\r\n this.setNoticeState();\r\n this.setNoticeContent();\r\n }\r\n }\r\n\r\n /**\r\n * 关闭按钮的点击事件\r\n */\r\n onCloseButtonClickCalback = () => {\r\n if (this._canClose) {\r\n this.checkTipsToggleState();\r\n clearTimeout(this._closeTimeTicker);\r\n this.view.close();\r\n }\r\n }\r\n}"]}
\ No newline at end of file
......@@ -5894,11 +5894,6 @@
"meta": 1643274501008,
"relativePath": "script/game/ui/presenter/notice"
},
"b3b4451d-4077-4e86-8252-7ae8b694d4e1": {
"asset": 1643274457939,
"meta": 1643274501042,
"relativePath": "script/game/ui/presenter/notice/NewNoticeViewPresenter.ts"
},
"58bc93c2-d8df-487b-bd07-0a6f079cb593": {
"asset": 1643274457931,
"meta": 1643274501048,
......@@ -6154,11 +6149,6 @@
"meta": 1643274501888,
"relativePath": "script/game/ui/view/type/DateCountView.ts"
},
"78e0410b-bcbe-4e20-b27c-3c966b2d3076": {
"asset": 1643274457971,
"meta": 1643274501891,
"relativePath": "script/game/ui/view/type/DatingEventSubview.ts"
},
"cdfe4b36-3844-4a91-aa67-381fd2a1dd29": {
"asset": 1643274457972,
"meta": 1643274501893,
......@@ -6324,11 +6314,6 @@
"meta": 1643275019690,
"relativePath": "script/game/ui/view/impl/notice/NewNoticeViewImpl.ts"
},
"13297d9a-7696-4c46-96e0-0bbebf0919d2": {
"asset": 1643275570064,
"meta": 1643275577993,
"relativePath": "script/game/model/GameModelManager.ts"
},
"f2d00e7e-a889-4fad-a98c-7248c79456b3": {
"asset": 1643275229396,
"meta": 1643275578015,
......@@ -6339,16 +6324,6 @@
"meta": 1643275668210,
"relativePath": "script/game/ui/presenter/ChatListViewPresenter.ts"
},
"6bc4c8b1-0f3e-4663-84cd-3d5670f40a40": {
"asset": 1643275596943,
"meta": 1643275668338,
"relativePath": "script/game/ui/presenter/DatingEventViewPresenter.ts"
},
"52f06191-b63c-4fbb-9df6-1c1bbda46344": {
"asset": 1643275595231,
"meta": 1643275668496,
"relativePath": "script/game/ui/presenter/DatingScenePresenter.ts"
},
"44fa1ecc-7d51-4cf6-8c85-6b51e158d85d": {
"asset": 1643275597785,
"meta": 1643275668511,
......@@ -6364,14 +6339,39 @@
"meta": 1643275668604,
"relativePath": "script/game/ui/presenter/ExtraPlotDatingEventSubViewPresenter.ts"
},
"73860035-95fb-42c3-a0c8-4a1754585f6c": {
"asset": 1643275594240,
"meta": 1643275668696,
"relativePath": "script/game/ui/presenter/MainViewPresenter.ts"
},
"09017250-b1a4-4eb8-af03-3e292018a356": {
"asset": 1643275600304,
"meta": 1643275668738,
"relativePath": "script/game/ui/view/impl/PhoneCallViewImpl.ts"
},
"13297d9a-7696-4c46-96e0-0bbebf0919d2": {
"asset": 1643342043551,
"meta": 1643342047811,
"relativePath": "script/game/model/GameModelManager.ts"
},
"6bc4c8b1-0f3e-4663-84cd-3d5670f40a40": {
"asset": 1643337269198,
"meta": 1643342047931,
"relativePath": "script/game/ui/presenter/DatingEventViewPresenter.ts"
},
"52f06191-b63c-4fbb-9df6-1c1bbda46344": {
"asset": 1643337271287,
"meta": 1643342048069,
"relativePath": "script/game/ui/presenter/DatingScenePresenter.ts"
},
"73860035-95fb-42c3-a0c8-4a1754585f6c": {
"asset": 1643341824277,
"meta": 1643342048162,
"relativePath": "script/game/ui/presenter/MainViewPresenter.ts"
},
"b3b4451d-4077-4e86-8252-7ae8b694d4e1": {
"asset": 1643342045262,
"meta": 1643342048203,
"relativePath": "script/game/ui/presenter/notice/NewNoticeViewPresenter.ts"
},
"78e0410b-bcbe-4e20-b27c-3c966b2d3076": {
"asset": 1643337262866,
"meta": 1643342048209,
"relativePath": "script/game/ui/view/type/DatingEventSubview.ts"
}
}
\ No newline at end of file
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
......@@ -131,10 +131,6 @@ let MainViewPresenter = /** @class */ (() => {
}
}
};
this.onRefreshDiscoveryRedDot = () => {
this._viewProps.discoverRedDot = !GameModelManager_1.GameModelManager.checkResumeFullEnergyMarked();
this.view.setProps(this._viewProps);
};
this.onMainTabForceClick = (param) => {
UIManager_1.UIManager.popToPresenter(this);
let index = param.index;
......@@ -366,7 +362,6 @@ let MainViewPresenter = /** @class */ (() => {
this._subPresenters[0].open(viewContainer, undefined);
this.dealTabGuide(Enums_1.MainTabs.messageTab);
this._viewProps.selectedTab = Enums_1.MainTabs.messageTab;
this._disposable.add(GameModelManager_1.GameModelManager.RefreshDiscoverTabRed.on(this.onRefreshDiscoveryRedDot));
this._disposable.add(GameModelManager_1.GameModelManager.ShowPlotBlocked.on(this.onShowPlotBlocked));
this._disposable.add(GameModelManager_1.GameModelManager.AutoPopView.on(this.onAutoPopView));
this._disposable.add(GameModelManager_1.GameModelManager.UnlockItem.on(this.onUnlockItem));
......@@ -514,4 +509,4 @@ cc._RF.pop();
});
}
})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvZ2FtZS91aS9wcmVzZW50ZXIvTWFpblZpZXdQcmVzZW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrREFBcUQ7QUFDckQsMENBQXlGO0FBQ3pGLDJFQUFxRjtBQUVyRixpRkFBOEU7QUFDOUUsMkVBQXdFO0FBQ3hFLHFFQUFrRTtBQUNsRSx1Q0FBc0g7QUFDdEgsaURBQTBDO0FBQzFDLDZFQUFzRTtBQUN0RSxtRUFBZ0U7QUFDaEUsc0VBQXlEO0FBQ3pELDBDQUFtQztBQUNuQyw4RUFBc0U7QUFDdEUsb0RBQThFO0FBQzlFLHlFQUFrRTtBQUNsRSxpRUFBOEQ7QUFDOUQsNkRBQXNEO0FBQ3RELG1FQUE0RDtBQUM1RCw2REFBc0Q7QUFDdEQsaUVBQTBEO0FBQzFELCtEQUF3RDtBQUN4RCxtRUFBNEQ7QUFDNUQsbUVBQXNEO0FBRXRELHlEQUE2QztBQUM3QyxtRkFBZ0Y7QUFDaEYsK0VBQTRFO0FBQzVFLHFEQUE0RDtBQUM1RCxvREFBMEQ7QUFDMUQsdURBQThDO0FBQzlDLDBEQUErRDtBQUMvRCw0RUFBcUU7QUFDckUscUVBQStEO0FBQy9ELHFFQUE4RDtBQUM5RCx5Q0FBZ0M7QUFFaEMsTUFBTSxtQkFBbUIsR0FBZ0Q7SUFDckUsOEJBQW9CO0lBQ3BCLGtDQUF3QjtJQUN4QiwrQkFBcUI7Q0FDeEIsQ0FBQztBQUNGLGFBQWE7QUFDYixNQUFNLGVBQWUsR0FBVyxDQUFDLENBQUM7QUFFbEM7O0lBQUEsSUFBcUIsaUJBQWlCLHlCQUF0QyxNQUFxQixpQkFBa0IsU0FBUSx5QkFBOEI7UUFhekU7WUFDSSxLQUFLLEVBQUUsQ0FBQztZQVpKLG1CQUFjLEdBQTJCLEVBQUUsQ0FBQztZQUM1QyxnQkFBVyxHQUFHLENBQUMsQ0FBQztZQUVoQixnQkFBVyxHQUFHLEtBQUssQ0FBQztZQUNYLHdCQUFtQixHQUFHLEdBQUcsQ0FBQztZQUNuQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztZ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LENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLGtCQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDdEU7UUFDTCxDQUFDO1FBMkJELFNBQVMsQ0FBQyxRQUFnQjtZQUN0QixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksUUFBUSxFQUFFO2dCQUM5QixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFFL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3hDO1FBQ0wsQ0FBQztRQTBGRCxjQUFjLENBQUMsTUFBYztZQUN6QixJQUFJLEdBQUcsR0FBNkMsU0FBUyxDQUFDO1lBQzlELElBQUksTUFBTSxFQUFFO2dCQUNSLEdBQUcsR0FBRyxvQ0FBYSxDQUFDLFNBQVMsQ0FBQyxpQkFBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQ2xEO1lBQ0QsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDO0tBeURKLENBQUE7SUE1Y1Usc0JBQUksR0FBRyxtQkFBbUIsQ0FBQztJQVVwQiwwQkFBUSxHQUFXLENBQUMsQ0FBQyxDQUFDO0lBWG5CLGlCQUFpQjtRQURyQyxxQ0FBWSxDQUFDLHVCQUFZLENBQUM7T0FDTixpQkFBaUIsQ0E2Y3JDO0lBQUQsd0JBQUM7S0FBQTtrQkE3Y29CLGlCQUFpQiIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ01hbmFnZXIgfSBmcm9tIFwic2ltYmEtY29uZmlnLW1hbmFnZXJcIjtcbmltcG9ydCB7IEdhbWVSZWNvcmQsIFBsb3RNYW5hZ2VyLCBSZWFkb25seVBsb3RzLCBTcGVjaWFsUGxvdElkIH0gZnJvbSBcIi4uLy4uLy4uL2F2Zy9BVkdcIjtcbmltcG9ydCB7IGNyZWF0ZVByZXNlbnRlciwgUHJlc2VudGVyIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9jbGFzc2Jhc2UvUHJlc2VudGVyQmFzZVwiO1xuaW1wb3J0IHsgVmlldyB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vY2xhc3NiYXNlL1ZpZXdCYXNlXCI7XG5pbXBvcnQgeyBHYW1lVGV4dERhdGEgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2dhbWVwbGF5L2dhbWVkYXRhL0dhbWVUZXh0RGF0YVwiO1xuaW1wb3J0IHsgVUlNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9nYW1lcGxheS9tYW5hZ2Vycy9VSU1hbmFnZXJcIjtcbmltcG9ydCB7IGRhdGVTY2VuZUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvRGF0ZVNjZW5lQ29uZmlnXCI7XG5pbXBvcnQgeyBBdXRvUG9wVmlld1R5cGUsIEd1aWRlTG9jYXRpb24sIEd1aWRlT3BlcmF0aW9uVHlwZSwgR3VpZGVTdGF0ZSwgTWFpblRhYnMsIFBsb3RTY2VuZVR5cGUgfSBmcm9tIFwiLi4vLi4vRW51bXNcIjtcbmltcG9ydCBHYW1lRG90TWdyIGZyb20gXCIuLi8uLi9HYW1lRG90TWdyXCI7XG5pbXBvcnQgeyBEYXRpbmdFdmVudFN0YXR1cyB9IGZyb20gXCIuLi8uLi9tb2RlbC9EYXRpbmdFdmVudFNjZW5lTW9kZWxcIjtcbmltcG9ydCB7IEdhbWVNb2RlbE1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWwvR2FtZU1vZGVsTWFuYWdlclwiO1xuaW1wb3J0IHsgUmVnUHJlc2VudGVyIH0gZnJvbSBcIi4uL1ByZXNlbnRlckNDVmlld0ZhY3RvcnlcIjtcbmltcG9ydCBWZXJiVmlldyBmcm9tIFwiLi4vVmVyYlZpZXdcIjtcbmltcG9ydCB7IHNob3dUb0JlQ29udGludWUgfSBmcm9tIFwiLi4vdmlldy9pbXBsL0FsZXJ0VG9CZUNvbnRpbnVlSW1wbFwiO1xuaW1wb3J0IHsgTWFpblZpZXcsIE1haW5WaWV3UHJvcHMsIE1haW5WaWV3VHlwZSB9IGZyb20gXCIuLi92aWV3L3R5cGUvTWFpblZpZXdcIjtcbmltcG9ydCBEYXRpbmdFdmVudFZpZXdQcmVzZW50ZXIgZnJvbSBcIi4vRGF0aW5nRXZlbnRWaWV3UHJlc2VudGVyXCI7XG5pbXBvcnQgeyBEYXRpbmdTY2VuZVByZXNlbnRlciB9IGZyb20gXCIuL0RhdGluZ1NjZW5lUHJlc2VudGVyXCI7XG5pbXBvcnQgRGVidWdWaWV3UHJlc2VudGVyIGZyb20gXCIuL0RlYnVnVmlld1ByZXNlbnRlclwiO1xuaW1wb3J0IERpc2NvdmVyVmlld1ByZXNlbnRlciBmcm9tIFwiLi9EaXNjb3ZlclZpZXdQcmVzZW50ZXJcIjtcbmltcG9ydCBHdWlkZVZpZXdQcmVzZW50ZXIgZnJvbSBcIi4vR3VpZGVWaWV3UHJlc2VudGVyXCI7XG5pbXBvcnQgTWVzc2FnZVZpZXdQcmVzZW50ZXIgZnJvbSBcIi4vTWVzc2FnZVZpZXdQcmVzZW50ZXJcIjtcbmltcG9ydCBOb3RpY2VWaWV3UHJlc2VudGVyIGZyb20gXCIuL05vdGljZVZpZXdQcmVzZW50ZXJcIjtcbmltcG9ydCBQbG90U3RvcFZpZXdQcmVzZW50ZXIgZnJvbSBcIi4vUGxvdFN0b3BWaWV3UHJlc2VudGVyXCI7XG5pbXBvcnQgeyBBdWRpb01hbmFnZXIgfSBmcm9tIFwic2ltYmEtY2MtYXVkaW8tbWFuYWdlclwiO1xuaW1wb3J0IHsgRGVlcFJlYWRvbmx5T2JqZWN0IH0gZnJvbSBcInNpbWJhLXV0aWxzXCI7XG5pbXBvcnQgeyBSZXNVdGlscyB9IGZyb20gXCJzaW1iYS1jYy1yZXN1dGlsc1wiO1xuaW1wb3J0IHsgR2FtZUNvbnN0RGF0YSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZ2FtZXBsYXkvZ2FtZWRhdGEvR2FtZUNvbnN0RGF0YVwiO1xuaW1wb3J0IHsgVW5sb2NrSXRlbU1vZGVsTWFuYWdlciB9IGZyb20gXCIuLi8uLi9tb2RlbC9VbmxvY2tJdGVtTW9kZWxNYW5hZ2VyXCI7XG5pbXBvcnQgeyBJSXRlbVRibCwgaXRlbVRibCB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvSXRlbVRibFwiO1xuaW1wb3J0IHsgY2hhbm5lbCwgR2FtZUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9HYW1lQ29uZmlnXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcInNpbWJhLWh0dHBjbGllbnRcIjtcbmltcG9ydCB7IERhdGVUeXBlLCBQYWdlSW5kZXggfSBmcm9tIFwiLi4vLi4vLi4vYXZnL0VkaXRvckVudW1zXCI7XG5pbXBvcnQgTmV3Tm90aWNlVmlld1ByZXNlbnRlciBmcm9tIFwiLi9ub3RpY2UvTmV3Tm90aWNlVmlld1ByZXNlbnRlclwiO1xuaW1wb3J0IHsgU291cmNlVmlldyB9IGZyb20gXCIuLi92aWV3L3R5cGUvbm90aWNlL05ld05vdGljZVZpZXdcIjtcbmltcG9ydCBFeHRyYVBsb3RWaWV3UHJlc2VudGVyIGZyb20gXCIuL0V4dHJhUGxvdFZpZXdQcmVzZW50ZXJcIjtcbmltcG9ydCB7IFNESyB9IGZyb20gXCJzaW1iYS1zZGtcIjtcblxuY29uc3QgVGFiUHJlc2VudGVyRmFjdG9yeTogKHsgbmV3KCk6IFByZXNlbnRlciB9ICYgeyB1dWlkOiBzdHJpbmcgfSlbXSA9IFtcbiAgICBNZXNzYWdlVmlld1ByZXNlbnRlcixcbiAgICBEYXRpbmdFdmVudFZpZXdQcmVzZW50ZXIsXG4gICAgRGlzY292ZXJWaWV3UHJlc2VudGVyXG5dO1xuLyoq5Li757q/5Ymn5oOF55qE5LiL5qCHICovXG5jb25zdCBNQUlOX1BMT1RfSU5ERVg6IG51bWJlciA9IDA7XG5AUmVnUHJlc2VudGVyKE1haW5WaWV3VHlwZSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1haW5WaWV3UHJlc2VudGVyIGV4dGVuZHMgUHJlc2VudGVyPHVuZGVmaW5lZCwgTWFpblZpZXc+IHtcbiAgICBzdGF0aWMgdXVpZCA9IFwiTWFpblZpZXdQcmVzZW50ZXJcIjtcbiAgICBwcml2YXRlIF9zdWJQcmVzZW50ZXJzOiBQcmVzZW50ZXI8YW55LCBWaWV3PltdID0gW107XG4gICAgcHJpdmF0ZSBfY3VycmVudFRhYiA9IDA7XG4gICAgcHJpdmF0ZSBfdmlld1Byb3BzOiBNYWluVmlld1Byb3BzO1xuICAgIHByaXZhdGUgX2xvYWRpbmdUYWIgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJUb2dnbGVEZWxheVRpbWUgPSA2MTg7XG4gICAgcHJpdmF0ZSBfdGFiQ2xpY2tBYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9pdGVtSWQ6IG51bWJlciA9IC0xO1xuICAgIHByaXZhdGUgX2hhc0l0ZW06IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgc3RhdGljIHRhYkluZGV4OiBudW1iZXIgPSAtMTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl92aWV3UHJvcHMgPSB7XG4gICAgICAgICAgICBzZWxlY3RlZFRhYjogMCxcbiAgICAgICAgICAgIG1lc3NhZ2VSZWREb3Q6IGZhbHNlLFxuICAgICAgICAgICAgZGF0aW5nRXZlbnRSZWREb3Q6IGZhbHNlLFxuICAgICAgICAgICAgZGlzY292ZXJSZWREb3Q6IGZhbHNlLFxuICAgICAgICAgICAgb25UYWJDbGljazogdGhpcy5vblRhYkNsaWNrLFxuICAgICAgICAgICAgb25EZWJ1Z0NsaWNrOiB0aGlzLm9uRGVidWdDbGlja0NhbGxiYWNrLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG9uRGVidWdDbGlja0NhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICBVSU1hbmFnZXIucHVzaFByZXNlbnRlcihEZWJ1Z1ZpZXdQcmVzZW50ZXIsIHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgb25Hb1RvU2hvcENsaWNrQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICAgIEdhbWVEb3RNZ3IuZ2V0SW5zdGFuY2UoKS5kb3RDbGlja1VJKFwic2hvcF9idG5fTWFpblZpZXdcIik7XG4gICAgICAgIGlmIChjaGFubmVsID09IFwid2VjaGF0XCIpIHtcbiAgICAgICAgICAgIC8vIEdhbWVDZW50ZXIuZ2V0SW5zdGFuY2UoKS5vcGVuU3ViUHJvZ3JhbShHYW1lQ29uZmlnLnlvdVphblNob3BBcHBJZCk7XG4gICAgICAgICAgICBsZXQgbGluayA9IEdhbWVNb2RlbE1hbmFnZXIuZ2V0WW91WmFuU2hvcFVybEJ5VHlwZSg4KTtcbiAgICAgICAgICAgIGlmIChsaW5rKSB7XG4gICAgICAgICAgICAgICAgU0RLLm9wZW5Qcm9ncmFtVjIoR2FtZUNvbmZpZy55b3VaYW5TaG9wQXBwSWQsIGxpbmspO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNoYW5uZWwgPT0gXCJhbmRyb2lkXCIpIHtcbiAgICAgICAgICAgIGxldCBsaW5rID0gR2FtZU1vZGVsTWFuYWdlci5nZXRUYW9CYW9TaG9wVXJsQnlUeXBlKDgpO1xuICAgICAgICAgICAgaWYgKGxpbmspIHtcbiAgICAgICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLmp1bXBUb1Rhb2Jhb1Nob3AobGluayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBVSU1hbmFnZXIuc2hvd1RvYXN0KFwi6K+l5Yqf6IO95Zyo5b2T5YmN5bmz5Y+w5LiN5Y+v5L2/55SoXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Db21tb25Qcm9ibGVtQ2xpY2tDYWxsYmFjayA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCByZXNTdHIgPSBhd2FpdCBuZXcgSHR0cENsaWVudChHYW1lQ29uZmlnLmNvbW1vblByb2JsZW1Db25maWdVcmwpLmdldCgpIGFzIHN0cmluZztcbiAgICAgICAgICAgIGxldCByZXMgPSBKU09OLnBhcnNlKHJlc1N0cik7XG4gICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgVUlNYW5hZ2VyLnB1c2hQcmVzZW50ZXIoTm90aWNlVmlld1ByZXNlbnRlciwge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcmVzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiByZXMuY29udGVudFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVja1JlZERvdCA9IChwbG90czogUmVhZG9ubHlQbG90cykgPT4ge1xuICAgICAgICB0aGlzLl92aWV3UHJvcHMubWVzc2FnZVJlZERvdCA9IHBsb3RzW01BSU5fUExPVF9JTkRFWF0ucGxvdFNjZW5lVHlwZSA9PT0gUGxvdFNjZW5lVHlwZS5NZXNzYWdlIHx8IHBsb3RzW01BSU5fUExPVF9JTkRFWF0ucGxvdFNjZW5lVHlwZSA9PT0gUGxvdFNjZW5lVHlwZS5QaG9uZUNhbGw7XG4gICAgICAgIHRoaXMuX3ZpZXdQcm9wcy5kYXRpbmdFdmVudFJlZERvdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl92aWV3UHJvcHMuZGF0aW5nRXZlbnRSZWREb3QgPSBwbG90cyAmJiAocGxvdHNbMF0ucGxvdFNjZW5lVHlwZSA9PT0gUGxvdFNjZW5lVHlwZS5EYXRpbmdFdmVudCAmJiAocGxvdHNbMF0uaWQgIT09IFNwZWNpYWxQbG90SWQuVG9CZUNvbnRpbnVlZCAmJiBwbG90c1swXS5pZCAhPT0gU3BlY2lhbFBsb3RJZC5FbmQpKTtcbiAgICAgICAgdGhpcy52aWV3LnNldFByb3BzKHRoaXMuX3ZpZXdQcm9wcyk7XG4gICAgICAgIGlmIChwbG90c1tNQUlOX1BMT1RfSU5ERVhdICYmIHBsb3RzW01BSU5fUExPVF9JTkRFWF0ucGxvdFNjZW5lVHlwZSA9PT0gUGxvdFNjZW5lVHlwZS5CbG9ja1Bsb3QpIHtcbiAgICAgICAgICAgIEdhbWVNb2RlbE1hbmFnZXIuZGVhbEJsb2NrZWRQbG90KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgY2hhbmdlID0gR2FtZU1vZGVsTWFuYWdlci5pc0NoYW5nZVBsb3RTY2VuZVR5cGUoKTtcbiAgICAgICAgICAgIGlmIChjaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBsZXQgcCA9IHBsb3RzW01BSU5fUExPVF9JTkRFWF07XG4gICAgICAgICAgICAgICAgbGV0IGlzU3BlY2lhbCA9IHAuaWQgPT09IFNwZWNpYWxQbG90SWQuRW5kIHx8IHAuaWQgPT09IFNwZWNpYWxQbG90SWQuVG9CZUNvbnRpbnVlZDtcbiAgICAgICAgICAgICAgICBpZiAoIWlzU3BlY2lhbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTWFpblBsb3RDaGFuZ2VkKHAucGxvdFNjZW5lVHlwZSwgcC5wbG90U2NlbmVUeXBlSWQpO1xuICAgICAgICAgICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLnNldElzQ2hhbmdlUGxvdFNjZW5lVHlwZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25SZWZyZXNoRGlzY292ZXJ5UmVkRG90ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLl92aWV3UHJvcHMuZGlzY292ZXJSZWREb3QgPSAhR2FtZU1vZGVsTWFuYWdlci5jaGVja1Jlc3VtZUZ1bGxFbmVyZ3lNYXJrZWQoKTtcbiAgICAgICAgdGhpcy52aWV3LnNldFByb3BzKHRoaXMuX3ZpZXdQcm9wcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgc3RhcnQoKSB7IC8vIOW8gOWni+a4uOaIj1xuICAgICAgICB0aGlzLl9zdWJQcmVzZW50ZXJzWzBdID0gYXdhaXQgY3JlYXRlUHJlc2VudGVyKFRhYlByZXNlbnRlckZhY3RvcnlbMF0pO1xuICAgICAgICBNYWluVmlld1ByZXNlbnRlci50YWJJbmRleCA9IDA7XG4gICAgICAgIGxldCB2aWV3Q29udGFpbmVyID0gdGhpcy5fdmlldy5nZXRUYWJDb250ZW50Q29udGFpbmVyKCk7XG4gICAgICAgIHRoaXMuX3N1YlByZXNlbnRlcnNbMF0ub3Blbih2aWV3Q29udGFpbmVyLCB1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLmRlYWxUYWJHdWlkZShNYWluVGFicy5tZXNzYWdlVGFiKTtcbiAgICAgICAgdGhpcy5fdmlld1Byb3BzLnNlbGVjdGVkVGFiID0gTWFpblRhYnMubWVzc2FnZVRhYjtcblxuICAgICAgICB0aGlzLl9kaXNwb3NhYmxlLmFkZChHYW1lTW9kZWxNYW5hZ2VyLlJlZnJlc2hEaXNjb3ZlclRhYlJlZC5vbih0aGlzLm9uUmVmcmVzaERpc2NvdmVyeVJlZERvdCkpO1xuICAgICAgICB0aGlzLl9kaXNwb3NhYmxlLmFkZChHYW1lTW9kZWxNYW5hZ2VyLlNob3dQbG90QmxvY2tlZC5vbih0aGlzLm9uU2hvd1Bsb3RCbG9ja2VkKSk7XG4gICAgICAgIHRoaXMuX2Rpc3Bvc2FibGUuYWRkKEdhbWVNb2RlbE1hbmFnZXIuQXV0b1BvcFZpZXcub24odGhpcy5vbkF1dG9Qb3BWaWV3KSk7XG4gICAgICAgIHRoaXMuX2Rpc3Bvc2FibGUuYWRkKEdhbWVNb2RlbE1hbmFnZXIuVW5sb2NrSXRlbS5vbih0aGlzLm9uVW5sb2NrSXRlbSkpO1xuXG4gICAgICAgIHRoaXMuX2Rpc3Bvc2FibGUuYWRkKEdhbWVNb2RlbE1hbmFnZXIuUmVmcmVzaEFsbFN0YXR1cy5vbih0aGlzLm9uUmVmcmVzaEFsbFN0YXR1cykpO1xuICAgICAgICB0aGlzLl9kaXNwb3NhYmxlLmFkZChHYW1lTW9kZWxNYW5hZ2VyLkp1bXBUb1ZpZXdJbkdhbWUub24odGhpcy5vbkp1bXBUb1ZpZXdJbkdhbWUpKTtcblxuXG4gICAgICAgIHRoaXMuY2hlY2tSZWREb3QoUGxvdE1hbmFnZXIuZ2V0Q3VycmVudFBsb3RzKCkpO1xuICAgICAgICBQbG90TWFuYWdlci5QbG90U3RhcnRFdmVudC5vbih0aGlzLmNoZWNrUmVkRG90KTtcbiAgICAgICAgbGV0IG5lZWRFbnRlclNwZWNpYWxEYXRpbmdTY2VuZSA9IHRoaXMuY2hlY2tJc05lZWRUb0VudGVyU3BlY2lhbERhdGluZ1NjZW5lKCk7XG4gICAgICAgIC8vIGNoZWNrIHRhYiBndWlkZVxuICAgICAgICAvLyB0aGlzLmNoZWNrVGFiR3VpZGUoKTtcbiAgICAgICAgaWYgKG5lZWRFbnRlclNwZWNpYWxEYXRpbmdTY2VuZSkge1xuICAgICAgICAgICAgR2FtZUNvbmZpZy5pc1ZlcmIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5lbnRlclNwZWNpYWxFdmVudFNjZW5lKCk7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50VGFiID0gTWFpblRhYnMuZGF0aW5nRXZlbnRUYWI7XG4gICAgICAgICAgICB0aGlzLl92aWV3UHJvcHMuc2VsZWN0ZWRUYWIgPSBNYWluVGFicy5kYXRpbmdFdmVudFRhYjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90YWJDbGlja0FibGUgPSB0cnVlO1xuICAgICAgICAvL+i/m+WFpeS4u+eVjOmdouabtOaWsOe6oueCueeKtuaAgVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIC8v5YWz6Zet562J5b6F55WM6Z2iXG4gICAgICAgICAgICB0aGlzLnZpZXcuc2hvd1dhaXRpbmdWaWV3KGZhbHNlKTtcbiAgICAgICAgICAgIC8v5byA5aeL5by56LW36Ieq5Yqo56qX5Y+jXG4gICAgICAgICAgICBpZiAoUGxvdE1hbmFnZXIuZ2V0Q3VycmVudFBsb3RzKClbTUFJTl9QTE9UX0lOREVYXS5pZCA9PT0gU3BlY2lhbFBsb3RJZC5Ub0JlQ29udGludWVkKSB7XG4gICAgICAgICAgICAgICAgR2FtZU1vZGVsTWFuYWdlci5yZWdpc3RlckF1dG9Qb3BWaWV3KEF1dG9Qb3BWaWV3VHlwZS5Ub0JlQ29udGludWVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBhdXRvU2hvd05vdGljZSA9IEdhbWVNb2RlbE1hbmFnZXIuZ2V0QXV0b1Nob3dOb3RpY2UoKTtcbiAgICAgICAgICAgIGlmIChhdXRvU2hvd05vdGljZSkge1xuICAgICAgICAgICAgICAgIEdhbWVNb2RlbE1hbmFnZXIucmVnaXN0ZXJBdXRvUG9wVmlldyhBdXRvUG9wVmlld1R5cGUuTm90aWNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB1bmxvY2tJdGVtcyA9IFVubG9ja0l0ZW1Nb2RlbE1hbmFnZXIudW5sb2NrSXRlbXM7XG4gICAgICAgICAgICBpZiAodW5sb2NrSXRlbXMuaW5kZXhPZig0KSA9PSAtMSkge1xuICAgICAgICAgICAgICAgIEdhbWVNb2RlbE1hbmFnZXIucmVnaXN0ZXJBdXRvUG9wVmlldyhBdXRvUG9wVmlld1R5cGUuTm90ZUJvb2spO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFuZWVkRW50ZXJTcGVjaWFsRGF0aW5nU2NlbmUpIHtcbiAgICAgICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLmNoZWNrQXV0b1BvcFZpZXcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMjAwMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qOA5p+l5paw5omL5pWZ56iL5piv5ZCm5a6M5oiQ77yM5b2T5YmN5paw5omL5pWZ56iL5a6M5oiQ55qE5Yik5a6a5piv5a6M5oiQ56ys5LiA56ugXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgY2hlY2tOb3ZpY2VUdXRvcmlhbE92ZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBtb2RlbHMgPSBHYW1lTW9kZWxNYW5hZ2VyLmdldE1haW5EYXRpbmdFdmVudFNjZW5lc01vZGVsKCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kZWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobW9kZWxzW2ldLnN0YXR1cyA9PSA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGFzeW5jIGVudGVyU3BlY2lhbEV2ZW50U2NlbmUoKSB7XG4gICAgICAgIGxldCBhcnIgPSBHYW1lTW9kZWxNYW5hZ2VyLmdldE1haW5EYXRpbmdFdmVudFNjZW5lc01vZGVsKCk7XG4gICAgICAgIFVJTWFuYWdlci5wdXNoUHJlc2VudGVyKERhdGluZ1NjZW5lUHJlc2VudGVyLCBhcnJbMF0sIHRydWUpO1xuICAgIH1cblxuICAgIGNoZWNrSXNOZWVkVG9FbnRlclNwZWNpYWxEYXRpbmdTY2VuZSgpIHtcbiAgICAgICAgbGV0IGFyciA9IEdhbWVNb2RlbE1hbmFnZXIuZ2V0TWFpbkRhdGluZ0V2ZW50U2NlbmVzTW9kZWwoKTtcbiAgICAgICAgbGV0IG5lZWQgPSBhcnIgJiYgYXJyLmxlbmd0aCA9PT0gMSAmJiBhcnJbMF0uc3RhdHVzICE9PSBEYXRpbmdFdmVudFN0YXR1cy5Db21wbGV0ZWQ7XG4gICAgICAgIHJldHVybiBuZWVkO1xuICAgIH1cblxuICAgIG9uTWFpblRhYkZvcmNlQ2xpY2sgPSAocGFyYW06IHsgaW5kZXg6IG51bWJlciwgcHVyZUNsaWNrOiBib29sZWFuLCBwcm9wSWQ/OiBudW1iZXIgfSkgPT4ge1xuICAgICAgICBVSU1hbmFnZXIucG9wVG9QcmVzZW50ZXIodGhpcyk7XG4gICAgICAgIGxldCBpbmRleCA9IHBhcmFtLmluZGV4O1xuICAgICAgICB0aGlzLm9uVGFiQ2xpY2soaW5kZXgpO1xuICAgIH1cblxuICAgIG9uQ2xvc2UoKSB7XG4gICAgICAgIHN1cGVyLm9uQ2xvc2UoKTtcbiAgICAgICAgVUlNYW5hZ2VyLnBvcFRvUHJlc2VudGVyKHRoaXMpO1xuICAgIH1cblxuICAgIG9uT3BlbigpIHtcbiAgICAgICAgc3VwZXIub25PcGVuKHVuZGVmaW5lZCk7XG4gICAgICAgIC8vIHRoaXMucGVybG9hZFByZWZhYigpO1xuICAgICAgICAvLyB0aGlzLmRpc2NvdmVySW5pdCgpO1xuICAgIH1cblxuICAgIGRpc2NvdmVySW5pdCgpIHtcbiAgICAgICAgR2FtZVJlY29yZC5vbkdsb2JhbFZhcmlhYmxlQ2hhbmdlKFwicmVkX3BvdF9cIiArIERpc2NvdmVyVmlld1ByZXNlbnRlci51dWlkLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl92aWV3UHJvcHMuZGlzY292ZXJSZWREb3QgPSBHYW1lTW9kZWxNYW5hZ2VyLmNoZWNrUmVkUG90KERpc2NvdmVyVmlld1ByZXNlbnRlci51dWlkKTtcbiAgICAgICAgICAgIHRoaXMudmlldy5zZXRQcm9wcyh0aGlzLl92aWV3UHJvcHMpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fdmlld1Byb3BzLmRpc2NvdmVyUmVkRG90ID0gR2FtZU1vZGVsTWFuYWdlci5jaGVja1JlZFBvdChEaXNjb3ZlclZpZXdQcmVzZW50ZXIudXVpZCk7XG4gICAgICAgIHRoaXMudmlldy5zZXRQcm9wcyh0aGlzLl92aWV3UHJvcHMpO1xuICAgIH1cblxuICAgIHBlcmxvYWRQcmVmYWIoKSB7XG4gICAgICAgIGxldCBQRkxpc3QgPSBbXCJwcmVmYWIvdWkvRGF0aW5nRXZlbnRWaWV3XCJdO1xuICAgICAgICBjYy5yZXNvdXJjZXMucHJlbG9hZChQRkxpc3QpO1xuICAgIH1cblxuICAgIG9uRW50ZXJCYWNrZ3JvdW5kKCkge1xuICAgICAgICBzdXBlci5vbkVudGVyQmFja2dyb3VuZCgpO1xuICAgICAgICBpZiAodGhpcy5fc3ViUHJlc2VudGVyc1t0aGlzLl9jdXJyZW50VGFiXSlcbiAgICAgICAgICAgIHRoaXMuX3N1YlByZXNlbnRlcnNbdGhpcy5fY3VycmVudFRhYl0ub25FbnRlckJhY2tncm91bmQoKTtcbiAgICB9XG5cbiAgICAvKipwcmVzZW50ZXLov5vlhaXliY3mma8gKi9cbiAgICBhc3luYyBvbkVudGVyRm9yZWdyb3VuZCgpIHtcbiAgICAgICAgc3VwZXIub25FbnRlckZvcmVncm91bmQoKTtcbiAgICAgICAgaWYgKHRoaXMuX3N1YlByZXNlbnRlcnNbdGhpcy5fY3VycmVudFRhYl0pIHtcbiAgICAgICAgICAgIHRoaXMuX3N1YlByZXNlbnRlcnNbdGhpcy5fY3VycmVudFRhYl0ub25FbnRlckZvcmVncm91bmQoKTtcbiAgICAgICAgICAgIHRoaXMuX3N1YlByZXNlbnRlcnNbdGhpcy5fY3VycmVudFRhYl0ub25FbnRlckZvcmVncm91bmQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUGxvdE1hbmFnZXIuZ2V0Q3VycmVudFBsb3RzKClbTUFJTl9QTE9UX0lOREVYXS5pZCA9PT0gU3BlY2lhbFBsb3RJZC5Ub0JlQ29udGludWVkKSB7XG4gICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLnJlZ2lzdGVyQXV0b1BvcFZpZXcoQXV0b1BvcFZpZXdUeXBlLlRvQmVDb250aW51ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghR2FtZUNvbmZpZy5pc1ZlcmIpIHtcbiAgICAgICAgICAgIEdhbWVNb2RlbE1hbmFnZXIuY2hlY2tBdXRvUG9wVmlldygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TaG93KCkge1xuICAgICAgICBzdXBlci5vblNob3coKTtcbiAgICAgICAgLy8gdGhpcy5jaGVja1RhYkd1aWRlKCk7XG4gICAgfVxuXG4gICAgb25UYWJDbGljayA9IGFzeW5jIChpbmRleDogbnVtYmVyLCBjYWxsYmFjaz86IEZ1bmN0aW9uLCBpc0RvdD86IEJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLl90YWJDbGlja0FibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRlYWxUYWJHdWlkZShpbmRleCk7XG4gICAgICAgIGxldCB1dWlkID0gVGFiUHJlc2VudGVyRmFjdG9yeVtpbmRleF0udXVpZDtcbiAgICAgICAgaWYgKCFHYW1lTW9kZWxNYW5hZ2VyLmNoZWNrRnVuY1VubG9jZWQodXVpZCkpIHtcbiAgICAgICAgICAgIFVJTWFuYWdlci5zaG93VG9hc3QoR2FtZU1vZGVsTWFuYWdlci5nZXRMYW5ndWFnZVR4dChHYW1lVGV4dERhdGEuR0FNRV9URVhUX01BSU5fRlVOQ1RJT05fTk9UX09QRU4pKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fbG9hZGluZ1RhYikgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudFRhYiAhPT0gaW5kZXgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdWJQcmVzZW50ZXJzW3RoaXMuX2N1cnJlbnRUYWJdKVxuICAgICAgICAgICAgICAgIHRoaXMuX3N1YlByZXNlbnRlcnNbdGhpcy5fY3VycmVudFRhYl0udmlldy5oaWRlKCk7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50VGFiID0gaW5kZXg7XG4gICAgICAgICAgICB0aGlzLl92aWV3UHJvcHMuc2VsZWN0ZWRUYWIgPSBpbmRleDtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXcuc2V0UHJvcHModGhpcy5fdmlld1Byb3BzKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gMikge1xuICAgICAgICAgICAgICAgIE1haW5WaWV3UHJlc2VudGVyLnRhYkluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3N1YlByZXNlbnRlcnNbdGhpcy5fY3VycmVudFRhYl0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkaW5nVGFiID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBhd2FpdCBjcmVhdGVQcmVzZW50ZXIoVGFiUHJlc2VudGVyRmFjdG9yeVt0aGlzLl9jdXJyZW50VGFiXSkudGhlbigocHJlc2VudGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N1YlByZXNlbnRlcnNbdGhpcy5fY3VycmVudFRhYl0gPSBwcmVzZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIHByZXNlbnRlci5vcGVuKHRoaXMudmlldy5nZXRUYWJDb250ZW50Q29udGFpbmVyKCksIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gey8v5bu25pe2562J5b6FNjE45q+r56eS77yMVmlldyDkuK1VSeWIt+aWsFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZ1RhYiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl90YWJUb2dnbGVEZWxheVRpbWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3N1YlByZXNlbnRlcnNbdGhpcy5fY3VycmVudFRhYl0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3ViUHJlc2VudGVyc1t0aGlzLl9jdXJyZW50VGFiXS52aWV3LnNob3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlYWxUYWJHdWlkZShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGxldCByID0gR2FtZVJlY29yZC5nbG9iYWxWYXJpYWJsZXNbXCJndWlkZV9tYWluX3RhYlwiICsgaW5kZXhdIGFzIG51bWJlcjtcbiAgICAgICAgciA9IHIgPT09IHVuZGVmaW5lZCA/IEd1aWRlU3RhdGUuY2xvc2UgOiByO1xuICAgICAgICBpZiAociA9PT0gR3VpZGVTdGF0ZS5PcGVuKSB7XG4gICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLnNldEd1aWRlTWFpblRhYlJlY29yZChpbmRleCwgR3VpZGVTdGF0ZS5Db21wbGV0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVja1RhYkd1aWRlID0gKCkgPT4ge1xuICAgICAgICBsZXQgY2hlY2s6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKCFjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbmRleCA9IEdhbWVNb2RlbE1hbmFnZXIuZ2V0TWFpblRhYkd1aWRlSW5kZXgoKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgLy9hdHRlbnRpb25cbiAgICAgICAgICAgIGxldCByZWREb3RBcnIgPSBbdGhpcy5fdmlld1Byb3BzLm1lc3NhZ2VSZWREb3QsIHRoaXMuX3ZpZXdQcm9wcy5kYXRpbmdFdmVudFJlZERvdCwgdGhpcy5fdmlld1Byb3BzLmRpc2NvdmVyUmVkRG90XTtcbiAgICAgICAgICAgIGlmICghcmVkRG90QXJyW2luZGV4XSB8fCB0aGlzLl9jdXJyZW50VGFiID09PSBpbmRleCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFVJTWFuYWdlci5wb3BUb1ByZXNlbnRlcih0aGlzKTtcbiAgICAgICAgICAgIGxldCBtID0gdGhpcy52aWV3LmdldEd1aWRlVGFiUGFyYW0oaW5kZXgpO1xuICAgICAgICAgICAgaWYgKG0pIHtcbiAgICAgICAgICAgICAgICBsZXQgbG9jYXRpb246IEd1aWRlTG9jYXRpb24gPSBpbmRleCA9PT0gTWFpblRhYnMuZGF0aW5nRXZlbnRUYWIgPyBHdWlkZUxvY2F0aW9uLlRhYkRhdGUgOiBHdWlkZUxvY2F0aW9uLlRhYk1zZztcbiAgICAgICAgICAgICAgICBtLmNhbGwgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25UYWJDbGljayhpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5oaWRlQ2xpY2tBbmlCeUluZGV4KGluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgVUlNYW5hZ2VyLnB1c2hQcmVzZW50ZXIoR3VpZGVWaWV3UHJlc2VudGVyLCBtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaFRhYih0YWJJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50VGFiICE9IHRhYkluZGV4KSB7XG4gICAgICAgICAgICBsZXQgcHJldkluZGV4ID0gdGhpcy5fY3VycmVudFRhYjtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRUYWIgPSB0YWJJbmRleDtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdQcm9wcy5zZWxlY3RlZFRhYiA9IHRoaXMuX2N1cnJlbnRUYWI7XG5cbiAgICAgICAgICAgIHRoaXMuX3ZpZXcuc2V0UHJvcHModGhpcy5fdmlld1Byb3BzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQXV0b1BvcFZpZXcgPSBhc3luYyAodmlld1R5cGU6IEF1dG9Qb3BWaWV3VHlwZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHZpZXdUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEF1dG9Qb3BWaWV3VHlwZS5Ub0JlQ29udGludWVkOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2hvd1RvQmVDb250aW51ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQXV0b1BvcFZpZXdUeXBlLk5vdGljZTpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFVJTWFuYWdlci5wdXNoUHJlc2VudGVyKE5ld05vdGljZVZpZXdQcmVzZW50ZXIsIFNvdXJjZVZpZXcuTWVzc2FnZVZpZXcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQXV0b1BvcFZpZXdUeXBlLlBsb3RTdG9wOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgVUlNYW5hZ2VyLnB1c2hQcmVzZW50ZXIoUGxvdFN0b3BWaWV3UHJlc2VudGVyLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgb25TaG93UGxvdEJsb2NrZWQgPSAoKSA9PiB7XG4gICAgICAgIEdhbWVNb2RlbE1hbmFnZXIucmVnaXN0ZXJBdXRvUG9wVmlldyhBdXRvUG9wVmlld1R5cGUuUGxvdFN0b3ApO1xuICAgIH1cblxuICAgIG9uTWFpblBsb3RDaGFuZ2VkID0gYXN5bmMgKHBUeXBlOiBQbG90U2NlbmVUeXBlLCBwSWQ6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAoIUdhbWVNb2RlbE1hbmFnZXIuaXNNYWluUGxvdFNjZW5lVHlwZSgpIHx8IENvbmZpZ01hbmFnZXIuZ2V0Q29uZmlnKGRhdGVTY2VuZUNvbmZpZywgcElkKS5EYXRlVHlwZSA9PSBEYXRlVHlwZS5EYXRlX1NwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgVUlNYW5hZ2VyLnBvcFRvUHJlc2VudGVyKHRoaXMpO1xuICAgICAgICBsZXQgY29tcCA9IGNjLmRpcmVjdG9yLmdldFNjZW5lKCkuZ2V0Q2hpbGRCeU5hbWUoXCJDYW52YXNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJWZXJiUm9vdFwiKS5nZXRDaGlsZEJ5TmFtZShcIlZlcmJWaWV3XCIpLmdldENvbXBvbmVudChWZXJiVmlldyk7XG4gICAgICAgIGlmICh0aGlzLl9oYXNJdGVtICYmIC0xICE9PSB0aGlzLl9pdGVtSWQpIHtcbiAgICAgICAgICAgIC8v5Yqg6L295Zu+5ZKM57uE57uH54mp5ZOB5o6J6JC95pWw5o2uXG4gICAgICAgICAgICBsZXQgc2hvd0l0ZW1DZmc6IERlZXBSZWFkb25seU9iamVjdDxJSXRlbVRibD4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsZXQgaXRlbVNwcml0ZUZyYW1lOiBjYy5TcHJpdGVGcmFtZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHNob3dJdGVtQ2ZnID0gdGhpcy5nZXRTaG93SXRlbUNmZyh0aGlzLl9pdGVtSWQpO1xuICAgICAgICAgICAgaWYgKHNob3dJdGVtQ2ZnKSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhdGg6IHN0cmluZyA9IEdhbWVDb25zdERhdGEuR0FNRV9DT05TVF9JVEVNX0JJR19TUFJfRElSICsgc2hvd0l0ZW1DZmcuaWNvbjtcbiAgICAgICAgICAgICAgICBpdGVtU3ByaXRlRnJhbWUgPSBhd2FpdCBSZXNVdGlscy5sb2FkUmVzKHBhdGgsIGNjLlNwcml0ZUZyYW1lKTtcbiAgICAgICAgICAgICAgICBjb21wLnNldEl0ZW1Ecm9wRGF0YShpdGVtU3ByaXRlRnJhbWUsIHNob3dJdGVtQ2ZnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9pdGVtSWQgPSAtMTtcbiAgICAgICAgICAgICAgICB0aGlzLl9oYXNJdGVtID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChwVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBQbG90U2NlbmVUeXBlLk1lc3NhZ2U6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiQ2xpY2soTWFpblRhYnMubWVzc2FnZVRhYiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3ViUHJlc2VudGVyc1t0aGlzLl9jdXJyZW50VGFiXS5vblNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAudG9DaGF0KHsgdGl0bGU6IFwiXCIsIGRlc2M6IFwi5p2l55S15LqGISFcIiB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVNb2RlbE1hbmFnZXIuRm9yY2VDbGlja0RhdGFSZWFkeS5lbWl0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZU1vZGVsTWFuYWdlci5Gb3JjZUNsaWNrTXNnSXRlbS5lbWl0KHBJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFBsb3RTY2VuZVR5cGUuRGF0aW5nRXZlbnQ6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY2ZncyA9IENvbmZpZ01hbmFnZXIuZ2V0QWxsQ29uZmlnKGRhdGVTY2VuZUNvbmZpZyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpZHM6IHN0cmluZ1tdID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaWQgaW4gY2Zncykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNmZ3NbaWRdLkRhdGVUeXBlID09IERhdGVUeXBlLkRhdGVfTm9ybWFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRzLnB1c2goaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxldCBwbG90SWRzOiBudW1iZXJbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW9kZWxzID0gR2FtZU1vZGVsTWFuYWdlci5nZXRNYWluRGF0aW5nRXZlbnRTY2VuZXNNb2RlbCgpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGVscy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGxvdElkcy5wdXNoKG1vZGVsc1tpXS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gcGxvdElkcy5pbmRleE9mKHBJZCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IFwi56ysXCIgKyAocGxvdElkcy5sZW5ndGgpICsgXCLnq6DvvJpcIjtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNmZyA9IENvbmZpZ01hbmFnZXIuZ2V0Q29uZmlnKGRhdGVTY2VuZUNvbmZpZywgcElkKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRlc2MgPSBjZmcgJiYgY2ZnLm5hbWUgPyBHYW1lTW9kZWxNYW5hZ2VyLmdldENvbmZpZ0xhbmd1YWdlVHh0KGNmZy5uYW1lKSA6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGNvbXAudG9EYXRpbmcoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLnBsYXlFZmZlY3QoJ3ZlcmInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25UYWJDbGljayhNYWluVGFicy5kYXRpbmdFdmVudFRhYiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVNb2RlbE1hbmFnZXIuRm9yY2VDbGlja0RhdGFSZWFkeS5lbWl0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZU1vZGVsTWFuYWdlci5Gb3JjZUNsaWNrRGF0aW5nSXRlbS5lbWl0KHBJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3LmhpZGVDbGlja0FuaUJ5SW5kZXgoTWFpblRhYnMuZGF0aW5nRXZlbnRUYWIpO1xuICAgICAgICAgICAgICAgICAgICB9LCB7IHRpdGxlOiB0aXRsZSwgZGVzYzogZGVzYyB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFNob3dJdGVtQ2ZnKGl0ZW1JZDogbnVtYmVyKTogRGVlcFJlYWRvbmx5T2JqZWN0PElJdGVtVGJsPiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBjZmc6IERlZXBSZWFkb25seU9iamVjdDxJSXRlbVRibD4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChpdGVtSWQpIHtcbiAgICAgICAgICAgIGNmZyA9IENvbmZpZ01hbmFnZXIuZ2V0Q29uZmlnKGl0ZW1UYmwsIGl0ZW1JZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNmZztcbiAgICB9XG5cbiAgICBvblVubG9ja0l0ZW0gPSAoaXRlbUlkOiBudW1iZXIpID0+IHtcbiAgICAgICAgbGV0IHVubG9ja0l0ZW1zID0gVW5sb2NrSXRlbU1vZGVsTWFuYWdlci51bmxvY2tJdGVtcztcbiAgICAgICAgbGV0IGlzTmV3ID0gdW5sb2NrSXRlbXMuaW5kZXhPZihpdGVtSWQpID09IC0xO1xuICAgICAgICBpZiAoaXNOZXcpIHtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1JZCA9IGl0ZW1JZDtcbiAgICAgICAgICAgIHRoaXMuX2hhc0l0ZW0gPSB0cnVlO1xuICAgICAgICAgICAgLy/lhpnlrZjmoaMr57uE57uH5pWw5o2u5bm25rS+5Y+RXG4gICAgICAgICAgICBVbmxvY2tJdGVtTW9kZWxNYW5hZ2VyLnNhdmVJdGVtSWRUb0dhbWVSZWNvcmQoaXRlbUlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUmVmcmVzaEFsbFN0YXR1cyA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgdGhpcy5jaGVja1JlZERvdChQbG90TWFuYWdlci5nZXRDdXJyZW50UGxvdHMoKSk7XG5cbiAgICAgICAgR2FtZUNvbmZpZy5zaG93VG9CZUNvbnRpbnVlID0gZmFsc2U7XG4gICAgICAgIGxldCBuZWVkRW50ZXJTcGVjaWFsRGF0aW5nU2NlbmUgPSB0aGlzLmNoZWNrSXNOZWVkVG9FbnRlclNwZWNpYWxEYXRpbmdTY2VuZSgpO1xuICAgICAgICAvLyBjaGVjayB0YWIgZ3VpZGVcbiAgICAgICAgLy8gdGhpcy5jaGVja1RhYkd1aWRlKCk7XG4gICAgICAgIGlmIChuZWVkRW50ZXJTcGVjaWFsRGF0aW5nU2NlbmUpIHtcbiAgICAgICAgICAgIEdhbWVDb25maWcuaXNWZXJiID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZW50ZXJTcGVjaWFsRXZlbnRTY2VuZSgpO1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFRhYiA9IE1haW5UYWJzLmRhdGluZ0V2ZW50VGFiO1xuICAgICAgICAgICAgdGhpcy5fdmlld1Byb3BzLnNlbGVjdGVkVGFiID0gTWFpblRhYnMuZGF0aW5nRXZlbnRUYWI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLmNoZWNrQXV0b1BvcFZpZXcoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90YWJDbGlja0FibGUgPSB0cnVlXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5Y2n5a6k6L+U5Zue54K55Ye7VUnkuovku7ZcbiAgICAgKiBAcGFyYW0gaW5kZXgg6L+U5Zue5YW35L2TdGFiSW5kZXhcbiAgICAgKi9cbiAgICBvbkp1bXBUb1ZpZXdJbkdhbWUgPSAoaW5kZXg6IFBhZ2VJbmRleCkgPT4ge1xuICAgICAgICBsZXQgdGFiID0gTWFpblRhYnMubWVzc2FnZVRhYjtcbiAgICAgICAgc3dpdGNoIChpbmRleCkge1xuICAgICAgICAgICAgY2FzZSBQYWdlSW5kZXguTWVzc2FnZVZpZXc6XG4gICAgICAgICAgICAgICAgdGFiID0gTWFpblRhYnMubWVzc2FnZVRhYlxuICAgICAgICAgICAgICAgIHRoaXMuX3ZpZXcub25UYWJCdXR0b25DbGljayhudWxsLCBgJHt0YWJ9YCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFBhZ2VJbmRleC5EYXRlRXZlbnRWaWV3OlxuICAgICAgICAgICAgICAgIHRhYiA9IE1haW5UYWJzLmRhdGluZ0V2ZW50VGFiXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlldy5vblRhYkJ1dHRvbkNsaWNrKG51bGwsIGAke3RhYn1gKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUGFnZUluZGV4LkV4dHJhUGxvdFZpZXc6XG4gICAgICAgICAgICAgICAgdGFiID0gTWFpblRhYnMuZGF0aW5nRXZlbnRUYWJcbiAgICAgICAgICAgICAgICB0aGlzLl92aWV3Lm9uVGFiQnV0dG9uQ2xpY2sobnVsbCwgYCR7dGFifWApO1xuICAgICAgICAgICAgICAgIFVJTWFuYWdlci5wdXNoUHJlc2VudGVyKEV4dHJhUGxvdFZpZXdQcmVzZW50ZXIsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgcGFnZUluZGV4IGlzIGludmFsaWQuXCIpO1xuICAgICAgICAgICAgICAgIFVJTWFuYWdlci5zaG93VG9hc3QoXCLml6DmlYjnmoTpobXpnaLot7PovaxcIik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59Il19
\ No newline at end of file
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvZ2FtZS91aS9wcmVzZW50ZXIvTWFpblZpZXdQcmVzZW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrREFBcUQ7QUFDckQsMENBQXlGO0FBQ3pGLDJFQUFxRjtBQUVyRixpRkFBOEU7QUFDOUUsMkVBQXdFO0FBQ3hFLHFFQUFrRTtBQUNsRSx1Q0FBc0g7QUFDdEgsaURBQTBDO0FBQzFDLDZFQUFzRTtBQUN0RSxtRUFBZ0U7QUFDaEUsc0VBQXlEO0FBQ3pELDBDQUFtQztBQUNuQyw4RUFBc0U7QUFDdEUsb0RBQThFO0FBQzlFLHlFQUFrRTtBQUNsRSxpRUFBOEQ7QUFDOUQsNkRBQXNEO0FBQ3RELG1FQUE0RDtBQUM1RCw2REFBc0Q7QUFDdEQsaUVBQTBEO0FBQzFELCtEQUF3RDtBQUN4RCxtRUFBNEQ7QUFDNUQsbUVBQXNEO0FBRXRELHlEQUE2QztBQUM3QyxtRkFBZ0Y7QUFDaEYsK0VBQTRFO0FBQzVFLHFEQUE0RDtBQUM1RCxvREFBMEQ7QUFDMUQsdURBQThDO0FBQzlDLDBEQUErRDtBQUMvRCw0RUFBcUU7QUFDckUscUVBQStEO0FBQy9ELHFFQUE4RDtBQUM5RCx5Q0FBZ0M7QUFFaEMsTUFBTSxtQkFBbUIsR0FBZ0Q7SUFDckUsOEJBQW9CO0lBQ3BCLGtDQUF3QjtJQUN4QiwrQkFBcUI7Q0FDeEIsQ0FBQztBQUNGLGFBQWE7QUFDYixNQUFNLGVBQWUsR0FBVyxDQUFDLENBQUM7QUFFbEM7O0lBQUEsSUFBcUIsaUJBQWlCLHlCQUF0QyxNQUFxQixpQkFBa0IsU0FBUSx5QkFBOEI7UUFhekU7WUFDSSxLQUFLLEVBQUUsQ0FBQztZQVpKLG1CQUFjLEdBQTJCLEVBQUUsQ0FBQztZQUM1QyxnQkFBVyxHQUFHLENBQUMsQ0FBQztZQUVoQixnQkFBVyxHQUFHLEtBQUssQ0FBQztZQUNYLHdCQUFtQixHQUFHLEdBQUcsQ0FBQztZQUNuQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztZ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QUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN4QztRQUNMLENBQUM7UUEwRkQsY0FBYyxDQUFDLE1BQWM7WUFDekIsSUFBSSxHQUFHLEdBQTZDLFNBQVMsQ0FBQztZQUM5RCxJQUFJLE1BQU0sRUFBRTtnQkFDUixHQUFHLEdBQUcsb0NBQWEsQ0FBQyxTQUFTLENBQUMsaUJBQU8sRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNsRDtZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQztLQXlESixDQUFBO0lBdGNVLHNCQUFJLEdBQUcsbUJBQW1CLENBQUM7SUFVcEIsMEJBQVEsR0FBVyxDQUFDLENBQUMsQ0FBQztJQVhuQixpQkFBaUI7UUFEckMscUNBQVksQ0FBQyx1QkFBWSxDQUFDO09BQ04saUJBQWlCLENBdWNyQztJQUFELHdCQUFDO0tBQUE7a0JBdmNvQixpQkFBaUIiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdNYW5hZ2VyIH0gZnJvbSBcInNpbWJhLWNvbmZpZy1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBHYW1lUmVjb3JkLCBQbG90TWFuYWdlciwgUmVhZG9ubHlQbG90cywgU3BlY2lhbFBsb3RJZCB9IGZyb20gXCIuLi8uLi8uLi9hdmcvQVZHXCI7XG5pbXBvcnQgeyBjcmVhdGVQcmVzZW50ZXIsIFByZXNlbnRlciB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vY2xhc3NiYXNlL1ByZXNlbnRlckJhc2VcIjtcbmltcG9ydCB7IFZpZXcgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2NsYXNzYmFzZS9WaWV3QmFzZVwiO1xuaW1wb3J0IHsgR2FtZVRleHREYXRhIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9nYW1lcGxheS9nYW1lZGF0YS9HYW1lVGV4dERhdGFcIjtcbmltcG9ydCB7IFVJTWFuYWdlciB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZ2FtZXBsYXkvbWFuYWdlcnMvVUlNYW5hZ2VyXCI7XG5pbXBvcnQgeyBkYXRlU2NlbmVDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL0RhdGVTY2VuZUNvbmZpZ1wiO1xuaW1wb3J0IHsgQXV0b1BvcFZpZXdUeXBlLCBHdWlkZUxvY2F0aW9uLCBHdWlkZU9wZXJhdGlvblR5cGUsIEd1aWRlU3RhdGUsIE1haW5UYWJzLCBQbG90U2NlbmVUeXBlIH0gZnJvbSBcIi4uLy4uL0VudW1zXCI7XG5pbXBvcnQgR2FtZURvdE1nciBmcm9tIFwiLi4vLi4vR2FtZURvdE1nclwiO1xuaW1wb3J0IHsgRGF0aW5nRXZlbnRTdGF0dXMgfSBmcm9tIFwiLi4vLi4vbW9kZWwvRGF0aW5nRXZlbnRTY2VuZU1vZGVsXCI7XG5pbXBvcnQgeyBHYW1lTW9kZWxNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uL21vZGVsL0dhbWVNb2RlbE1hbmFnZXJcIjtcbmltcG9ydCB7IFJlZ1ByZXNlbnRlciB9IGZyb20gXCIuLi9QcmVzZW50ZXJDQ1ZpZXdGYWN0b3J5XCI7XG5pbXBvcnQgVmVyYlZpZXcgZnJvbSBcIi4uL1ZlcmJWaWV3XCI7XG5pbXBvcnQgeyBzaG93VG9CZUNvbnRpbnVlIH0gZnJvbSBcIi4uL3ZpZXcvaW1wbC9BbGVydFRvQmVDb250aW51ZUltcGxcIjtcbmltcG9ydCB7IE1haW5WaWV3LCBNYWluVmlld1Byb3BzLCBNYWluVmlld1R5cGUgfSBmcm9tIFwiLi4vdmlldy90eXBlL01haW5WaWV3XCI7XG5pbXBvcnQgRGF0aW5nRXZlbnRWaWV3UHJlc2VudGVyIGZyb20gXCIuL0RhdGluZ0V2ZW50Vmlld1ByZXNlbnRlclwiO1xuaW1wb3J0IHsgRGF0aW5nU2NlbmVQcmVzZW50ZXIgfSBmcm9tIFwiLi9EYXRpbmdTY2VuZVByZXNlbnRlclwiO1xuaW1wb3J0IERlYnVnVmlld1ByZXNlbnRlciBmcm9tIFwiLi9EZWJ1Z1ZpZXdQcmVzZW50ZXJcIjtcbmltcG9ydCBEaXNjb3ZlclZpZXdQcmVzZW50ZXIgZnJvbSBcIi4vRGlzY292ZXJWaWV3UHJlc2VudGVyXCI7XG5pbXBvcnQgR3VpZGVWaWV3UHJlc2VudGVyIGZyb20gXCIuL0d1aWRlVmlld1ByZXNlbnRlclwiO1xuaW1wb3J0IE1lc3NhZ2VWaWV3UHJlc2VudGVyIGZyb20gXCIuL01lc3NhZ2VWaWV3UHJlc2VudGVyXCI7XG5pbXBvcnQgTm90aWNlVmlld1ByZXNlbnRlciBmcm9tIFwiLi9Ob3RpY2VWaWV3UHJlc2VudGVyXCI7XG5pbXBvcnQgUGxvdFN0b3BWaWV3UHJlc2VudGVyIGZyb20gXCIuL1Bsb3RTdG9wVmlld1ByZXNlbnRlclwiO1xuaW1wb3J0IHsgQXVkaW9NYW5hZ2VyIH0gZnJvbSBcInNpbWJhLWNjLWF1ZGlvLW1hbmFnZXJcIjtcbmltcG9ydCB7IERlZXBSZWFkb25seU9iamVjdCB9IGZyb20gXCJzaW1iYS11dGlsc1wiO1xuaW1wb3J0IHsgUmVzVXRpbHMgfSBmcm9tIFwic2ltYmEtY2MtcmVzdXRpbHNcIjtcbmltcG9ydCB7IEdhbWVDb25zdERhdGEgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2dhbWVwbGF5L2dhbWVkYXRhL0dhbWVDb25zdERhdGFcIjtcbmltcG9ydCB7IFVubG9ja0l0ZW1Nb2RlbE1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWwvVW5sb2NrSXRlbU1vZGVsTWFuYWdlclwiO1xuaW1wb3J0IHsgSUl0ZW1UYmwsIGl0ZW1UYmwgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL0l0ZW1UYmxcIjtcbmltcG9ydCB7IGNoYW5uZWwsIEdhbWVDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vR2FtZUNvbmZpZ1wiO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJzaW1iYS1odHRwY2xpZW50XCI7XG5pbXBvcnQgeyBEYXRlVHlwZSwgUGFnZUluZGV4IH0gZnJvbSBcIi4uLy4uLy4uL2F2Zy9FZGl0b3JFbnVtc1wiO1xuaW1wb3J0IE5ld05vdGljZVZpZXdQcmVzZW50ZXIgZnJvbSBcIi4vbm90aWNlL05ld05vdGljZVZpZXdQcmVzZW50ZXJcIjtcbmltcG9ydCB7IFNvdXJjZVZpZXcgfSBmcm9tIFwiLi4vdmlldy90eXBlL25vdGljZS9OZXdOb3RpY2VWaWV3XCI7XG5pbXBvcnQgRXh0cmFQbG90Vmlld1ByZXNlbnRlciBmcm9tIFwiLi9FeHRyYVBsb3RWaWV3UHJlc2VudGVyXCI7XG5pbXBvcnQgeyBTREsgfSBmcm9tIFwic2ltYmEtc2RrXCI7XG5cbmNvbnN0IFRhYlByZXNlbnRlckZhY3Rvcnk6ICh7IG5ldygpOiBQcmVzZW50ZXIgfSAmIHsgdXVpZDogc3RyaW5nIH0pW10gPSBbXG4gICAgTWVzc2FnZVZpZXdQcmVzZW50ZXIsXG4gICAgRGF0aW5nRXZlbnRWaWV3UHJlc2VudGVyLFxuICAgIERpc2NvdmVyVmlld1ByZXNlbnRlclxuXTtcbi8qKuS4u+e6v+WJp+aDheeahOS4i+aghyAqL1xuY29uc3QgTUFJTl9QTE9UX0lOREVYOiBudW1iZXIgPSAwO1xuQFJlZ1ByZXNlbnRlcihNYWluVmlld1R5cGUpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYWluVmlld1ByZXNlbnRlciBleHRlbmRzIFByZXNlbnRlcjx1bmRlZmluZWQsIE1haW5WaWV3PiB7XG4gICAgc3RhdGljIHV1aWQgPSBcIk1haW5WaWV3UHJlc2VudGVyXCI7XG4gICAgcHJpdmF0ZSBfc3ViUHJlc2VudGVyczogUHJlc2VudGVyPGFueSwgVmlldz5bXSA9IFtdO1xuICAgIHByaXZhdGUgX2N1cnJlbnRUYWIgPSAwO1xuICAgIHByaXZhdGUgX3ZpZXdQcm9wczogTWFpblZpZXdQcm9wcztcbiAgICBwcml2YXRlIF9sb2FkaW5nVGFiID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFiVG9nZ2xlRGVsYXlUaW1lID0gNjE4O1xuICAgIHByaXZhdGUgX3RhYkNsaWNrQWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfaXRlbUlkOiBudW1iZXIgPSAtMTtcbiAgICBwcml2YXRlIF9oYXNJdGVtOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHN0YXRpYyB0YWJJbmRleDogbnVtYmVyID0gLTE7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fdmlld1Byb3BzID0ge1xuICAgICAgICAgICAgc2VsZWN0ZWRUYWI6IDAsXG4gICAgICAgICAgICBtZXNzYWdlUmVkRG90OiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGluZ0V2ZW50UmVkRG90OiBmYWxzZSxcbiAgICAgICAgICAgIGRpc2NvdmVyUmVkRG90OiBmYWxzZSxcbiAgICAgICAgICAgIG9uVGFiQ2xpY2s6IHRoaXMub25UYWJDbGljayxcbiAgICAgICAgICAgIG9uRGVidWdDbGljazogdGhpcy5vbkRlYnVnQ2xpY2tDYWxsYmFjayxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvbkRlYnVnQ2xpY2tDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgVUlNYW5hZ2VyLnB1c2hQcmVzZW50ZXIoRGVidWdWaWV3UHJlc2VudGVyLCB1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIG9uR29Ub1Nob3BDbGlja0NhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICBHYW1lRG90TWdyLmdldEluc3RhbmNlKCkuZG90Q2xpY2tVSShcInNob3BfYnRuX01haW5WaWV3XCIpO1xuICAgICAgICBpZiAoY2hhbm5lbCA9PSBcIndlY2hhdFwiKSB7XG4gICAgICAgICAgICAvLyBHYW1lQ2VudGVyLmdldEluc3RhbmNlKCkub3BlblN1YlByb2dyYW0oR2FtZUNvbmZpZy55b3VaYW5TaG9wQXBwSWQpO1xuICAgICAgICAgICAgbGV0IGxpbmsgPSBHYW1lTW9kZWxNYW5hZ2VyLmdldFlvdVphblNob3BVcmxCeVR5cGUoOCk7XG4gICAgICAgICAgICBpZiAobGluaykge1xuICAgICAgICAgICAgICAgIFNESy5vcGVuUHJvZ3JhbVYyKEdhbWVDb25maWcueW91WmFuU2hvcEFwcElkLCBsaW5rKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjaGFubmVsID09IFwiYW5kcm9pZFwiKSB7XG4gICAgICAgICAgICBsZXQgbGluayA9IEdhbWVNb2RlbE1hbmFnZXIuZ2V0VGFvQmFvU2hvcFVybEJ5VHlwZSg4KTtcbiAgICAgICAgICAgIGlmIChsaW5rKSB7XG4gICAgICAgICAgICAgICAgR2FtZU1vZGVsTWFuYWdlci5qdW1wVG9UYW9iYW9TaG9wKGxpbmspO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgVUlNYW5hZ2VyLnNob3dUb2FzdChcIuivpeWKn+iDveWcqOW9k+WJjeW5s+WPsOS4jeWPr+S9v+eUqFwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ29tbW9uUHJvYmxlbUNsaWNrQ2FsbGJhY2sgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcmVzU3RyID0gYXdhaXQgbmV3IEh0dHBDbGllbnQoR2FtZUNvbmZpZy5jb21tb25Qcm9ibGVtQ29uZmlnVXJsKS5nZXQoKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICBsZXQgcmVzID0gSlNPTi5wYXJzZShyZXNTdHIpO1xuICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgIFVJTWFuYWdlci5wdXNoUHJlc2VudGVyKE5vdGljZVZpZXdQcmVzZW50ZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHJlcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogcmVzLmNvbnRlbnRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tSZWREb3QgPSAocGxvdHM6IFJlYWRvbmx5UGxvdHMpID0+IHtcbiAgICAgICAgdGhpcy5fdmlld1Byb3BzLm1lc3NhZ2VSZWREb3QgPSBwbG90c1tNQUlOX1BMT1RfSU5ERVhdLnBsb3RTY2VuZVR5cGUgPT09IFBsb3RTY2VuZVR5cGUuTWVzc2FnZSB8fCBwbG90c1tNQUlOX1BMT1RfSU5ERVhdLnBsb3RTY2VuZVR5cGUgPT09IFBsb3RTY2VuZVR5cGUuUGhvbmVDYWxsO1xuICAgICAgICB0aGlzLl92aWV3UHJvcHMuZGF0aW5nRXZlbnRSZWREb3QgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fdmlld1Byb3BzLmRhdGluZ0V2ZW50UmVkRG90ID0gcGxvdHMgJiYgKHBsb3RzWzBdLnBsb3RTY2VuZVR5cGUgPT09IFBsb3RTY2VuZVR5cGUuRGF0aW5nRXZlbnQgJiYgKHBsb3RzWzBdLmlkICE9PSBTcGVjaWFsUGxvdElkLlRvQmVDb250aW51ZWQgJiYgcGxvdHNbMF0uaWQgIT09IFNwZWNpYWxQbG90SWQuRW5kKSk7XG4gICAgICAgIHRoaXMudmlldy5zZXRQcm9wcyh0aGlzLl92aWV3UHJvcHMpO1xuICAgICAgICBpZiAocGxvdHNbTUFJTl9QTE9UX0lOREVYXSAmJiBwbG90c1tNQUlOX1BMT1RfSU5ERVhdLnBsb3RTY2VuZVR5cGUgPT09IFBsb3RTY2VuZVR5cGUuQmxvY2tQbG90KSB7XG4gICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLmRlYWxCbG9ja2VkUGxvdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGNoYW5nZSA9IEdhbWVNb2RlbE1hbmFnZXIuaXNDaGFuZ2VQbG90U2NlbmVUeXBlKCk7XG4gICAgICAgICAgICBpZiAoY2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgbGV0IHAgPSBwbG90c1tNQUlOX1BMT1RfSU5ERVhdO1xuICAgICAgICAgICAgICAgIGxldCBpc1NwZWNpYWwgPSBwLmlkID09PSBTcGVjaWFsUGxvdElkLkVuZCB8fCBwLmlkID09PSBTcGVjaWFsUGxvdElkLlRvQmVDb250aW51ZWQ7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1NwZWNpYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk1haW5QbG90Q2hhbmdlZChwLnBsb3RTY2VuZVR5cGUsIHAucGxvdFNjZW5lVHlwZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgR2FtZU1vZGVsTWFuYWdlci5zZXRJc0NoYW5nZVBsb3RTY2VuZVR5cGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHN0YXJ0KCkgeyAvLyDlvIDlp4vmuLjmiI9cbiAgICAgICAgdGhpcy5fc3ViUHJlc2VudGVyc1swXSA9IGF3YWl0IGNyZWF0ZVByZXNlbnRlcihUYWJQcmVzZW50ZXJGYWN0b3J5WzBdKTtcbiAgICAgICAgTWFpblZpZXdQcmVzZW50ZXIudGFiSW5kZXggPSAwO1xuICAgICAgICBsZXQgdmlld0NvbnRhaW5lciA9IHRoaXMuX3ZpZXcuZ2V0VGFiQ29udGVudENvbnRhaW5lcigpO1xuICAgICAgICB0aGlzLl9zdWJQcmVzZW50ZXJzWzBdLm9wZW4odmlld0NvbnRhaW5lciwgdW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5kZWFsVGFiR3VpZGUoTWFpblRhYnMubWVzc2FnZVRhYik7XG4gICAgICAgIHRoaXMuX3ZpZXdQcm9wcy5zZWxlY3RlZFRhYiA9IE1haW5UYWJzLm1lc3NhZ2VUYWI7XG5cbiAgICAgICAgdGhpcy5fZGlzcG9zYWJsZS5hZGQoR2FtZU1vZGVsTWFuYWdlci5TaG93UGxvdEJsb2NrZWQub24odGhpcy5vblNob3dQbG90QmxvY2tlZCkpO1xuICAgICAgICB0aGlzLl9kaXNwb3NhYmxlLmFkZChHYW1lTW9kZWxNYW5hZ2VyLkF1dG9Qb3BWaWV3Lm9uKHRoaXMub25BdXRvUG9wVmlldykpO1xuICAgICAgICB0aGlzLl9kaXNwb3NhYmxlLmFkZChHYW1lTW9kZWxNYW5hZ2VyLlVubG9ja0l0ZW0ub24odGhpcy5vblVubG9ja0l0ZW0pKTtcblxuICAgICAgICB0aGlzLl9kaXNwb3NhYmxlLmFkZChHYW1lTW9kZWxNYW5hZ2VyLlJlZnJlc2hBbGxTdGF0dXMub24odGhpcy5vblJlZnJlc2hBbGxTdGF0dXMpKTtcbiAgICAgICAgdGhpcy5fZGlzcG9zYWJsZS5hZGQoR2FtZU1vZGVsTWFuYWdlci5KdW1wVG9WaWV3SW5HYW1lLm9uKHRoaXMub25KdW1wVG9WaWV3SW5HYW1lKSk7XG5cblxuICAgICAgICB0aGlzLmNoZWNrUmVkRG90KFBsb3RNYW5hZ2VyLmdldEN1cnJlbnRQbG90cygpKTtcbiAgICAgICAgUGxvdE1hbmFnZXIuUGxvdFN0YXJ0RXZlbnQub24odGhpcy5jaGVja1JlZERvdCk7XG4gICAgICAgIGxldCBuZWVkRW50ZXJTcGVjaWFsRGF0aW5nU2NlbmUgPSB0aGlzLmNoZWNrSXNOZWVkVG9FbnRlclNwZWNpYWxEYXRpbmdTY2VuZSgpO1xuICAgICAgICAvLyBjaGVjayB0YWIgZ3VpZGVcbiAgICAgICAgLy8gdGhpcy5jaGVja1RhYkd1aWRlKCk7XG4gICAgICAgIGlmIChuZWVkRW50ZXJTcGVjaWFsRGF0aW5nU2NlbmUpIHtcbiAgICAgICAgICAgIEdhbWVDb25maWcuaXNWZXJiID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZW50ZXJTcGVjaWFsRXZlbnRTY2VuZSgpO1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFRhYiA9IE1haW5UYWJzLmRhdGluZ0V2ZW50VGFiO1xuICAgICAgICAgICAgdGhpcy5fdmlld1Byb3BzLnNlbGVjdGVkVGFiID0gTWFpblRhYnMuZGF0aW5nRXZlbnRUYWI7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFiQ2xpY2tBYmxlID0gdHJ1ZTtcbiAgICAgICAgLy/ov5vlhaXkuLvnlYzpnaLmm7TmlrDnuqLngrnnirbmgIFcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAvL+WFs+mXreetieW+heeVjOmdolxuICAgICAgICAgICAgdGhpcy52aWV3LnNob3dXYWl0aW5nVmlldyhmYWxzZSk7XG4gICAgICAgICAgICAvL+W8gOWni+W8uei1t+iHquWKqOeql+WPo1xuICAgICAgICAgICAgaWYgKFBsb3RNYW5hZ2VyLmdldEN1cnJlbnRQbG90cygpW01BSU5fUExPVF9JTkRFWF0uaWQgPT09IFNwZWNpYWxQbG90SWQuVG9CZUNvbnRpbnVlZCkge1xuICAgICAgICAgICAgICAgIEdhbWVNb2RlbE1hbmFnZXIucmVnaXN0ZXJBdXRvUG9wVmlldyhBdXRvUG9wVmlld1R5cGUuVG9CZUNvbnRpbnVlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgYXV0b1Nob3dOb3RpY2UgPSBHYW1lTW9kZWxNYW5hZ2VyLmdldEF1dG9TaG93Tm90aWNlKCk7XG4gICAgICAgICAgICBpZiAoYXV0b1Nob3dOb3RpY2UpIHtcbiAgICAgICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLnJlZ2lzdGVyQXV0b1BvcFZpZXcoQXV0b1BvcFZpZXdUeXBlLk5vdGljZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdW5sb2NrSXRlbXMgPSBVbmxvY2tJdGVtTW9kZWxNYW5hZ2VyLnVubG9ja0l0ZW1zO1xuICAgICAgICAgICAgaWYgKHVubG9ja0l0ZW1zLmluZGV4T2YoNCkgPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLnJlZ2lzdGVyQXV0b1BvcFZpZXcoQXV0b1BvcFZpZXdUeXBlLk5vdGVCb29rKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbmVlZEVudGVyU3BlY2lhbERhdGluZ1NjZW5lKSB7XG4gICAgICAgICAgICAgICAgR2FtZU1vZGVsTWFuYWdlci5jaGVja0F1dG9Qb3BWaWV3KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDIwMDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOajgOafpeaWsOaJi+aVmeeoi+aYr+WQpuWujOaIkO+8jOW9k+WJjeaWsOaJi+aVmeeoi+WujOaIkOeahOWIpOWumuaYr+WujOaIkOesrOS4gOeroFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIGNoZWNrTm92aWNlVHV0b3JpYWxPdmVyKCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgbW9kZWxzID0gR2FtZU1vZGVsTWFuYWdlci5nZXRNYWluRGF0aW5nRXZlbnRTY2VuZXNNb2RlbCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGVscy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKG1vZGVsc1tpXS5zdGF0dXMgPT0gNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBhc3luYyBlbnRlclNwZWNpYWxFdmVudFNjZW5lKCkge1xuICAgICAgICBsZXQgYXJyID0gR2FtZU1vZGVsTWFuYWdlci5nZXRNYWluRGF0aW5nRXZlbnRTY2VuZXNNb2RlbCgpO1xuICAgICAgICBVSU1hbmFnZXIucHVzaFByZXNlbnRlcihEYXRpbmdTY2VuZVByZXNlbnRlciwgYXJyWzBdLCB0cnVlKTtcbiAgICB9XG5cbiAgICBjaGVja0lzTmVlZFRvRW50ZXJTcGVjaWFsRGF0aW5nU2NlbmUoKSB7XG4gICAgICAgIGxldCBhcnIgPSBHYW1lTW9kZWxNYW5hZ2VyLmdldE1haW5EYXRpbmdFdmVudFNjZW5lc01vZGVsKCk7XG4gICAgICAgIGxldCBuZWVkID0gYXJyICYmIGFyci5sZW5ndGggPT09IDEgJiYgYXJyWzBdLnN0YXR1cyAhPT0gRGF0aW5nRXZlbnRTdGF0dXMuQ29tcGxldGVkO1xuICAgICAgICByZXR1cm4gbmVlZDtcbiAgICB9XG5cbiAgICBvbk1haW5UYWJGb3JjZUNsaWNrID0gKHBhcmFtOiB7IGluZGV4OiBudW1iZXIsIHB1cmVDbGljazogYm9vbGVhbiwgcHJvcElkPzogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgVUlNYW5hZ2VyLnBvcFRvUHJlc2VudGVyKHRoaXMpO1xuICAgICAgICBsZXQgaW5kZXggPSBwYXJhbS5pbmRleDtcbiAgICAgICAgdGhpcy5vblRhYkNsaWNrKGluZGV4KTtcbiAgICB9XG5cbiAgICBvbkNsb3NlKCkge1xuICAgICAgICBzdXBlci5vbkNsb3NlKCk7XG4gICAgICAgIFVJTWFuYWdlci5wb3BUb1ByZXNlbnRlcih0aGlzKTtcbiAgICB9XG5cbiAgICBvbk9wZW4oKSB7XG4gICAgICAgIHN1cGVyLm9uT3Blbih1bmRlZmluZWQpO1xuICAgICAgICAvLyB0aGlzLnBlcmxvYWRQcmVmYWIoKTtcbiAgICAgICAgLy8gdGhpcy5kaXNjb3ZlckluaXQoKTtcbiAgICB9XG5cbiAgICBkaXNjb3ZlckluaXQoKSB7XG4gICAgICAgIEdhbWVSZWNvcmQub25HbG9iYWxWYXJpYWJsZUNoYW5nZShcInJlZF9wb3RfXCIgKyBEaXNjb3ZlclZpZXdQcmVzZW50ZXIudXVpZCwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdmlld1Byb3BzLmRpc2NvdmVyUmVkRG90ID0gR2FtZU1vZGVsTWFuYWdlci5jaGVja1JlZFBvdChEaXNjb3ZlclZpZXdQcmVzZW50ZXIudXVpZCk7XG4gICAgICAgICAgICB0aGlzLnZpZXcuc2V0UHJvcHModGhpcy5fdmlld1Byb3BzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3ZpZXdQcm9wcy5kaXNjb3ZlclJlZERvdCA9IEdhbWVNb2RlbE1hbmFnZXIuY2hlY2tSZWRQb3QoRGlzY292ZXJWaWV3UHJlc2VudGVyLnV1aWQpO1xuICAgICAgICB0aGlzLnZpZXcuc2V0UHJvcHModGhpcy5fdmlld1Byb3BzKTtcbiAgICB9XG5cbiAgICBwZXJsb2FkUHJlZmFiKCkge1xuICAgICAgICBsZXQgUEZMaXN0ID0gW1wicHJlZmFiL3VpL0RhdGluZ0V2ZW50Vmlld1wiXTtcbiAgICAgICAgY2MucmVzb3VyY2VzLnByZWxvYWQoUEZMaXN0KTtcbiAgICB9XG5cbiAgICBvbkVudGVyQmFja2dyb3VuZCgpIHtcbiAgICAgICAgc3VwZXIub25FbnRlckJhY2tncm91bmQoKTtcbiAgICAgICAgaWYgKHRoaXMuX3N1YlByZXNlbnRlcnNbdGhpcy5fY3VycmVudFRhYl0pXG4gICAgICAgICAgICB0aGlzLl9zdWJQcmVzZW50ZXJzW3RoaXMuX2N1cnJlbnRUYWJdLm9uRW50ZXJCYWNrZ3JvdW5kKCk7XG4gICAgfVxuXG4gICAgLyoqcHJlc2VudGVy6L+b5YWl5YmN5pmvICovXG4gICAgYXN5bmMgb25FbnRlckZvcmVncm91bmQoKSB7XG4gICAgICAgIHN1cGVyLm9uRW50ZXJGb3JlZ3JvdW5kKCk7XG4gICAgICAgIGlmICh0aGlzLl9zdWJQcmVzZW50ZXJzW3RoaXMuX2N1cnJlbnRUYWJdKSB7XG4gICAgICAgICAgICB0aGlzLl9zdWJQcmVzZW50ZXJzW3RoaXMuX2N1cnJlbnRUYWJdLm9uRW50ZXJGb3JlZ3JvdW5kKCk7XG4gICAgICAgICAgICB0aGlzLl9zdWJQcmVzZW50ZXJzW3RoaXMuX2N1cnJlbnRUYWJdLm9uRW50ZXJGb3JlZ3JvdW5kKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFBsb3RNYW5hZ2VyLmdldEN1cnJlbnRQbG90cygpW01BSU5fUExPVF9JTkRFWF0uaWQgPT09IFNwZWNpYWxQbG90SWQuVG9CZUNvbnRpbnVlZCkge1xuICAgICAgICAgICAgR2FtZU1vZGVsTWFuYWdlci5yZWdpc3RlckF1dG9Qb3BWaWV3KEF1dG9Qb3BWaWV3VHlwZS5Ub0JlQ29udGludWVkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIUdhbWVDb25maWcuaXNWZXJiKSB7XG4gICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLmNoZWNrQXV0b1BvcFZpZXcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2hvdygpIHtcbiAgICAgICAgc3VwZXIub25TaG93KCk7XG4gICAgICAgIC8vIHRoaXMuY2hlY2tUYWJHdWlkZSgpO1xuICAgIH1cblxuICAgIG9uVGFiQ2xpY2sgPSBhc3luYyAoaW5kZXg6IG51bWJlciwgY2FsbGJhY2s/OiBGdW5jdGlvbiwgaXNEb3Q/OiBCb29sZWFuKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5fdGFiQ2xpY2tBYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZWFsVGFiR3VpZGUoaW5kZXgpO1xuICAgICAgICBsZXQgdXVpZCA9IFRhYlByZXNlbnRlckZhY3RvcnlbaW5kZXhdLnV1aWQ7XG4gICAgICAgIGlmICghR2FtZU1vZGVsTWFuYWdlci5jaGVja0Z1bmNVbmxvY2VkKHV1aWQpKSB7XG4gICAgICAgICAgICBVSU1hbmFnZXIuc2hvd1RvYXN0KEdhbWVNb2RlbE1hbmFnZXIuZ2V0TGFuZ3VhZ2VUeHQoR2FtZVRleHREYXRhLkdBTUVfVEVYVF9NQUlOX0ZVTkNUSU9OX05PVF9PUEVOKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2xvYWRpbmdUYWIpIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRUYWIgIT09IGluZGV4KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fc3ViUHJlc2VudGVyc1t0aGlzLl9jdXJyZW50VGFiXSlcbiAgICAgICAgICAgICAgICB0aGlzLl9zdWJQcmVzZW50ZXJzW3RoaXMuX2N1cnJlbnRUYWJdLnZpZXcuaGlkZSgpO1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudFRhYiA9IGluZGV4O1xuICAgICAgICAgICAgdGhpcy5fdmlld1Byb3BzLnNlbGVjdGVkVGFiID0gaW5kZXg7XG4gICAgICAgICAgICB0aGlzLl92aWV3LnNldFByb3BzKHRoaXMuX3ZpZXdQcm9wcyk7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IDIpIHtcbiAgICAgICAgICAgICAgICBNYWluVmlld1ByZXNlbnRlci50YWJJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9zdWJQcmVzZW50ZXJzW3RoaXMuX2N1cnJlbnRUYWJdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZ1RhYiA9IHRydWU7XG4gICAgICAgICAgICAgICAgYXdhaXQgY3JlYXRlUHJlc2VudGVyKFRhYlByZXNlbnRlckZhY3RvcnlbdGhpcy5fY3VycmVudFRhYl0pLnRoZW4oKHByZXNlbnRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdWJQcmVzZW50ZXJzW3RoaXMuX2N1cnJlbnRUYWJdID0gcHJlc2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBwcmVzZW50ZXIub3Blbih0aGlzLnZpZXcuZ2V0VGFiQ29udGVudENvbnRhaW5lcigpLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsvL+W7tuaXtuetieW+hTYxOOavq+enku+8jFZpZXcg5LitVUnliLfmlrBcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdUYWIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5fdGFiVG9nZ2xlRGVsYXlUaW1lKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zdWJQcmVzZW50ZXJzW3RoaXMuX2N1cnJlbnRUYWJdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N1YlByZXNlbnRlcnNbdGhpcy5fY3VycmVudFRhYl0udmlldy5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZWFsVGFiR3VpZGUoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBsZXQgciA9IEdhbWVSZWNvcmQuZ2xvYmFsVmFyaWFibGVzW1wiZ3VpZGVfbWFpbl90YWJcIiArIGluZGV4XSBhcyBudW1iZXI7XG4gICAgICAgIHIgPSByID09PSB1bmRlZmluZWQgPyBHdWlkZVN0YXRlLmNsb3NlIDogcjtcbiAgICAgICAgaWYgKHIgPT09IEd1aWRlU3RhdGUuT3Blbikge1xuICAgICAgICAgICAgR2FtZU1vZGVsTWFuYWdlci5zZXRHdWlkZU1haW5UYWJSZWNvcmQoaW5kZXgsIEd1aWRlU3RhdGUuQ29tcGxldGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tUYWJHdWlkZSA9ICgpID0+IHtcbiAgICAgICAgbGV0IGNoZWNrOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgIGlmICghY2hlY2spIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaW5kZXggPSBHYW1lTW9kZWxNYW5hZ2VyLmdldE1haW5UYWJHdWlkZUluZGV4KCk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIC8vYXR0ZW50aW9uXG4gICAgICAgICAgICBsZXQgcmVkRG90QXJyID0gW3RoaXMuX3ZpZXdQcm9wcy5tZXNzYWdlUmVkRG90LCB0aGlzLl92aWV3UHJvcHMuZGF0aW5nRXZlbnRSZWREb3QsIHRoaXMuX3ZpZXdQcm9wcy5kaXNjb3ZlclJlZERvdF07XG4gICAgICAgICAgICBpZiAoIXJlZERvdEFycltpbmRleF0gfHwgdGhpcy5fY3VycmVudFRhYiA9PT0gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBVSU1hbmFnZXIucG9wVG9QcmVzZW50ZXIodGhpcyk7XG4gICAgICAgICAgICBsZXQgbSA9IHRoaXMudmlldy5nZXRHdWlkZVRhYlBhcmFtKGluZGV4KTtcbiAgICAgICAgICAgIGlmIChtKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxvY2F0aW9uOiBHdWlkZUxvY2F0aW9uID0gaW5kZXggPT09IE1haW5UYWJzLmRhdGluZ0V2ZW50VGFiID8gR3VpZGVMb2NhdGlvbi5UYWJEYXRlIDogR3VpZGVMb2NhdGlvbi5UYWJNc2c7XG4gICAgICAgICAgICAgICAgbS5jYWxsID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiQ2xpY2soaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuaGlkZUNsaWNrQW5pQnlJbmRleChpbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFVJTWFuYWdlci5wdXNoUHJlc2VudGVyKEd1aWRlVmlld1ByZXNlbnRlciwgbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2hUYWIodGFiSW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudFRhYiAhPSB0YWJJbmRleCkge1xuICAgICAgICAgICAgbGV0IHByZXZJbmRleCA9IHRoaXMuX2N1cnJlbnRUYWI7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50VGFiID0gdGFiSW5kZXg7XG4gICAgICAgICAgICB0aGlzLl92aWV3UHJvcHMuc2VsZWN0ZWRUYWIgPSB0aGlzLl9jdXJyZW50VGFiO1xuXG4gICAgICAgICAgICB0aGlzLl92aWV3LnNldFByb3BzKHRoaXMuX3ZpZXdQcm9wcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkF1dG9Qb3BWaWV3ID0gYXN5bmMgKHZpZXdUeXBlOiBBdXRvUG9wVmlld1R5cGUpID0+IHtcbiAgICAgICAgc3dpdGNoICh2aWV3VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBBdXRvUG9wVmlld1R5cGUuVG9CZUNvbnRpbnVlZDpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHNob3dUb0JlQ29udGludWUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEF1dG9Qb3BWaWV3VHlwZS5Ob3RpY2U6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBVSU1hbmFnZXIucHVzaFByZXNlbnRlcihOZXdOb3RpY2VWaWV3UHJlc2VudGVyLCBTb3VyY2VWaWV3Lk1lc3NhZ2VWaWV3KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEF1dG9Qb3BWaWV3VHlwZS5QbG90U3RvcDpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIFVJTWFuYWdlci5wdXNoUHJlc2VudGVyKFBsb3RTdG9wVmlld1ByZXNlbnRlciwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIG9uU2hvd1Bsb3RCbG9ja2VkID0gKCkgPT4ge1xuICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLnJlZ2lzdGVyQXV0b1BvcFZpZXcoQXV0b1BvcFZpZXdUeXBlLlBsb3RTdG9wKTtcbiAgICB9XG5cbiAgICBvbk1haW5QbG90Q2hhbmdlZCA9IGFzeW5jIChwVHlwZTogUGxvdFNjZW5lVHlwZSwgcElkOiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKCFHYW1lTW9kZWxNYW5hZ2VyLmlzTWFpblBsb3RTY2VuZVR5cGUoKSB8fCBDb25maWdNYW5hZ2VyLmdldENvbmZpZyhkYXRlU2NlbmVDb25maWcsIHBJZCkuRGF0ZVR5cGUgPT0gRGF0ZVR5cGUuRGF0ZV9TcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFVJTWFuYWdlci5wb3BUb1ByZXNlbnRlcih0aGlzKTtcbiAgICAgICAgbGV0IGNvbXAgPSBjYy5kaXJlY3Rvci5nZXRTY2VuZSgpLmdldENoaWxkQnlOYW1lKFwiQ2FudmFzXCIpLmdldENoaWxkQnlOYW1lKFwiVmVyYlJvb3RcIikuZ2V0Q2hpbGRCeU5hbWUoXCJWZXJiVmlld1wiKS5nZXRDb21wb25lbnQoVmVyYlZpZXcpO1xuICAgICAgICBpZiAodGhpcy5faGFzSXRlbSAmJiAtMSAhPT0gdGhpcy5faXRlbUlkKSB7XG4gICAgICAgICAgICAvL+WKoOi9veWbvuWSjOe7hOe7h+eJqeWTgeaOieiQveaVsOaNrlxuICAgICAgICAgICAgbGV0IHNob3dJdGVtQ2ZnOiBEZWVwUmVhZG9ubHlPYmplY3Q8SUl0ZW1UYmw+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IGl0ZW1TcHJpdGVGcmFtZTogY2MuU3ByaXRlRnJhbWUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBzaG93SXRlbUNmZyA9IHRoaXMuZ2V0U2hvd0l0ZW1DZmcodGhpcy5faXRlbUlkKTtcbiAgICAgICAgICAgIGlmIChzaG93SXRlbUNmZykge1xuICAgICAgICAgICAgICAgIGxldCBwYXRoOiBzdHJpbmcgPSBHYW1lQ29uc3REYXRhLkdBTUVfQ09OU1RfSVRFTV9CSUdfU1BSX0RJUiArIHNob3dJdGVtQ2ZnLmljb247XG4gICAgICAgICAgICAgICAgaXRlbVNwcml0ZUZyYW1lID0gYXdhaXQgUmVzVXRpbHMubG9hZFJlcyhwYXRoLCBjYy5TcHJpdGVGcmFtZSk7XG4gICAgICAgICAgICAgICAgY29tcC5zZXRJdGVtRHJvcERhdGEoaXRlbVNwcml0ZUZyYW1lLCBzaG93SXRlbUNmZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5faXRlbUlkID0gLTE7XG4gICAgICAgICAgICAgICAgdGhpcy5faGFzSXRlbSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAocFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUGxvdFNjZW5lVHlwZS5NZXNzYWdlOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRhYkNsaWNrKE1haW5UYWJzLm1lc3NhZ2VUYWIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N1YlByZXNlbnRlcnNbdGhpcy5fY3VycmVudFRhYl0ub25TaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wLnRvQ2hhdCh7IHRpdGxlOiBcIlwiLCBkZXNjOiBcIuadpeeUteS6hiEhXCIgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLkZvcmNlQ2xpY2tEYXRhUmVhZHkuZW1pdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVNb2RlbE1hbmFnZXIuRm9yY2VDbGlja01zZ0l0ZW0uZW1pdChwSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQbG90U2NlbmVUeXBlLkRhdGluZ0V2ZW50OlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNmZ3MgPSBDb25maWdNYW5hZ2VyLmdldEFsbENvbmZpZyhkYXRlU2NlbmVDb25maWcpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGlkIGluIGNmZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZmdzW2lkXS5EYXRlVHlwZSA9PSBEYXRlVHlwZS5EYXRlX05vcm1hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkcy5wdXNoKGlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZXQgcGxvdElkczogbnVtYmVyW10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGVscyA9IEdhbWVNb2RlbE1hbmFnZXIuZ2V0TWFpbkRhdGluZ0V2ZW50U2NlbmVzTW9kZWwoKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb2RlbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsb3RJZHMucHVzaChtb2RlbHNbaV0uaWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHBsb3RJZHMuaW5kZXhPZihwSWQpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBcIuesrFwiICsgKHBsb3RJZHMubGVuZ3RoKSArIFwi56ug77yaXCI7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjZmcgPSBDb25maWdNYW5hZ2VyLmdldENvbmZpZyhkYXRlU2NlbmVDb25maWcsIHBJZCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZXNjID0gY2ZnICYmIGNmZy5uYW1lID8gR2FtZU1vZGVsTWFuYWdlci5nZXRDb25maWdMYW5ndWFnZVR4dChjZmcubmFtZSkgOiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBjb21wLnRvRGF0aW5nKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5wbGF5RWZmZWN0KCd2ZXJiJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiQ2xpY2soTWFpblRhYnMuZGF0aW5nRXZlbnRUYWIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLkZvcmNlQ2xpY2tEYXRhUmVhZHkuZW1pdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVNb2RlbE1hbmFnZXIuRm9yY2VDbGlja0RhdGluZ0l0ZW0uZW1pdChwSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5oaWRlQ2xpY2tBbmlCeUluZGV4KE1haW5UYWJzLmRhdGluZ0V2ZW50VGFiKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgeyB0aXRsZTogdGl0bGUsIGRlc2M6IGRlc2MgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRTaG93SXRlbUNmZyhpdGVtSWQ6IG51bWJlcik6IERlZXBSZWFkb25seU9iamVjdDxJSXRlbVRibD4gfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgY2ZnOiBEZWVwUmVhZG9ubHlPYmplY3Q8SUl0ZW1UYmw+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoaXRlbUlkKSB7XG4gICAgICAgICAgICBjZmcgPSBDb25maWdNYW5hZ2VyLmdldENvbmZpZyhpdGVtVGJsLCBpdGVtSWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjZmc7XG4gICAgfVxuXG4gICAgb25VbmxvY2tJdGVtID0gKGl0ZW1JZDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGxldCB1bmxvY2tJdGVtcyA9IFVubG9ja0l0ZW1Nb2RlbE1hbmFnZXIudW5sb2NrSXRlbXM7XG4gICAgICAgIGxldCBpc05ldyA9IHVubG9ja0l0ZW1zLmluZGV4T2YoaXRlbUlkKSA9PSAtMTtcbiAgICAgICAgaWYgKGlzTmV3KSB7XG4gICAgICAgICAgICB0aGlzLl9pdGVtSWQgPSBpdGVtSWQ7XG4gICAgICAgICAgICB0aGlzLl9oYXNJdGVtID0gdHJ1ZTtcbiAgICAgICAgICAgIC8v5YaZ5a2Y5qGjK+e7hOe7h+aVsOaNruW5tua0vuWPkVxuICAgICAgICAgICAgVW5sb2NrSXRlbU1vZGVsTWFuYWdlci5zYXZlSXRlbUlkVG9HYW1lUmVjb3JkKGl0ZW1JZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblJlZnJlc2hBbGxTdGF0dXMgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tSZWREb3QoUGxvdE1hbmFnZXIuZ2V0Q3VycmVudFBsb3RzKCkpO1xuXG4gICAgICAgIEdhbWVDb25maWcuc2hvd1RvQmVDb250aW51ZSA9IGZhbHNlO1xuICAgICAgICBsZXQgbmVlZEVudGVyU3BlY2lhbERhdGluZ1NjZW5lID0gdGhpcy5jaGVja0lzTmVlZFRvRW50ZXJTcGVjaWFsRGF0aW5nU2NlbmUoKTtcbiAgICAgICAgLy8gY2hlY2sgdGFiIGd1aWRlXG4gICAgICAgIC8vIHRoaXMuY2hlY2tUYWJHdWlkZSgpO1xuICAgICAgICBpZiAobmVlZEVudGVyU3BlY2lhbERhdGluZ1NjZW5lKSB7XG4gICAgICAgICAgICBHYW1lQ29uZmlnLmlzVmVyYiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmVudGVyU3BlY2lhbEV2ZW50U2NlbmUoKTtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRUYWIgPSBNYWluVGFicy5kYXRpbmdFdmVudFRhYjtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdQcm9wcy5zZWxlY3RlZFRhYiA9IE1haW5UYWJzLmRhdGluZ0V2ZW50VGFiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgR2FtZU1vZGVsTWFuYWdlci5jaGVja0F1dG9Qb3BWaWV3KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFiQ2xpY2tBYmxlID0gdHJ1ZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWNp+WupOi/lOWbnueCueWHu1VJ5LqL5Lu2XG4gICAgICogQHBhcmFtIGluZGV4IOi/lOWbnuWFt+S9k3RhYkluZGV4XG4gICAgICovXG4gICAgb25KdW1wVG9WaWV3SW5HYW1lID0gKGluZGV4OiBQYWdlSW5kZXgpID0+IHtcbiAgICAgICAgbGV0IHRhYiA9IE1haW5UYWJzLm1lc3NhZ2VUYWI7XG4gICAgICAgIHN3aXRjaCAoaW5kZXgpIHtcbiAgICAgICAgICAgIGNhc2UgUGFnZUluZGV4Lk1lc3NhZ2VWaWV3OlxuICAgICAgICAgICAgICAgIHRhYiA9IE1haW5UYWJzLm1lc3NhZ2VUYWJcbiAgICAgICAgICAgICAgICB0aGlzLl92aWV3Lm9uVGFiQnV0dG9uQ2xpY2sobnVsbCwgYCR7dGFifWApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQYWdlSW5kZXguRGF0ZUV2ZW50VmlldzpcbiAgICAgICAgICAgICAgICB0YWIgPSBNYWluVGFicy5kYXRpbmdFdmVudFRhYlxuICAgICAgICAgICAgICAgIHRoaXMuX3ZpZXcub25UYWJCdXR0b25DbGljayhudWxsLCBgJHt0YWJ9YCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFBhZ2VJbmRleC5FeHRyYVBsb3RWaWV3OlxuICAgICAgICAgICAgICAgIHRhYiA9IE1haW5UYWJzLmRhdGluZ0V2ZW50VGFiXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlldy5vblRhYkJ1dHRvbkNsaWNrKG51bGwsIGAke3RhYn1gKTtcbiAgICAgICAgICAgICAgICBVSU1hbmFnZXIucHVzaFByZXNlbnRlcihFeHRyYVBsb3RWaWV3UHJlc2VudGVyLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVGhlIHBhZ2VJbmRleCBpcyBpbnZhbGlkLlwiKTtcbiAgICAgICAgICAgICAgICBVSU1hbmFnZXIuc2hvd1RvYXN0KFwi5peg5pWI55qE6aG16Z2i6Lez6L2sXCIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==
\ No newline at end of file
......@@ -59,7 +59,6 @@ let NewNoticeViewPresenter = /** @class */ (() => {
this.onCloseButtonClickCalback = () => {
if (this._canClose) {
this.checkTipsToggleState();
GameModelManager_1.GameModelManager.setNoticeReaded(true);
clearTimeout(this._closeTimeTicker);
this.view.close();
}
......@@ -92,8 +91,6 @@ let NewNoticeViewPresenter = /** @class */ (() => {
initView() {
//重置可关闭状态为false
this._canClose = false;
//根据是否是第一次弹起紧急公告判断延迟时间
//this._delayTime = GameModelManager.getNoticeReaded() ? 0 : 3;
this._delayTime = 0;
//重置提示文本状态
this.view.getCloseTipsLabel().string = "";
......@@ -300,4 +297,4 @@ cc._RF.pop();
});
}
})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvZ2FtZS91aS9wcmVzZW50ZXIvbm90aWNlL05ld05vdGljZVZpZXdQcmVzZW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrREFBcUQ7QUFDckQseUNBQWdDO0FBQ2hDLDZEQUFzRTtBQUN0RSw4RUFBdUU7QUFDdkUsOEVBQTJFO0FBQzNFLGdGQUE2RTtBQUM3RSx1REFBNkQ7QUFDN0QsMEZBQXlHO0FBQ3pHLHNFQUFtRTtBQUNuRSxnRUFBNkQ7QUFDN0QscUVBQThEO0FBQzlELHlFQUE0RDtBQUM1RCx3RUFBb0k7QUFHcEk7SUFBQSxJQUFxQixzQkFBc0IsR0FBM0MsTUFBcUIsc0JBQXVCLFNBQVEseUJBQW9DO1FBUXBGO1lBQ0ksS0FBSyxFQUFFLENBQUM7WUFOSixnQkFBVyxHQUFlLDBCQUFVLENBQUMsWUFBWSxDQUFDO1lBQ2xELGVBQVUsR0FBVyxDQUFDLENBQUM7WUFDdkIscUJBQWdCLEdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDOUIsY0FBUyxHQUFZLEtBQUssQ0FBQztZQWlPbkM7OztlQUdHO1lBQ0gsZ0NBQTJCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtnQkFDNUMsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssRUFBRTtvQkFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7aUJBQzNCO1lBQ0wsQ0FBQyxDQUFBO1lBRUQ7O2VBRUc7WUFDSCw4QkFBeUIsR0FBRyxHQUFHLEVBQUU7Z0JBQzdCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDaEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7b0JBQzVCLG1DQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDdkMsWUFBWSxDQUFDLElBQUksQ0FB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UUFDSCxlQUFlO1lBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDO2FBQ3REO2lCQUFNO2dCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDM0MsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDM0IsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ1o7UUFDTCxDQUFDO0tBeUJKLENBQUE7SUE3UFUsMkJBQUksR0FBRyx3QkFBd0IsQ0FBQTtJQURyQixzQkFBc0I7UUFEMUMscUNBQVksQ0FBQyxpQ0FBaUIsQ0FBQztPQUNYLHNCQUFzQixDQThQMUM7SUFBRCw2QkFBQztLQUFBO2tCQTlQb0Isc0JBQXNCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlnTWFuYWdlciB9IGZyb20gXCJzaW1iYS1jb25maWctbWFuYWdlclwiO1xyXG5pbXBvcnQgeyBTREsgfSBmcm9tIFwic2ltYmEtc2RrXCI7XHJcbmltcG9ydCB7IEFjdGljaXR5VHlwZSwgUGFnZUluZGV4IH0gZnJvbSBcIi4uLy4uLy4uLy4uL2F2Zy9FZGl0b3JFbnVtc1wiO1xyXG5pbXBvcnQgeyBQcmVzZW50ZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vY29tbW9uL2NsYXNzYmFzZS9QcmVzZW50ZXJCYXNlXCI7XHJcbmltcG9ydCB7IFVJTWFuYWdlciB9IGZyb20gXCIuLi8uLi8uLi8uLi9jb21tb24vZ2FtZXBsYXkvbWFuYWdlcnMvVUlNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IHRhb0Jhb1Nob3BVcmxDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vLi4vY29uZmlnL1Rhb0Jhb1Nob3BVcmxDb25maWdcIjtcclxuaW1wb3J0IHsgY2hhbm5lbCwgR2FtZUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi8uLi9HYW1lQ29uZmlnXCI7XHJcbmltcG9ydCB7IEFjdGl2aXRpZXNDb25maWcsIEFjdGl2aXRpZXNJdGVtTW9kZWxNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVsL0FjdGl2aXRpZXNJdGVtTW9kZWxNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IEdhbWVNb2RlbE1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWwvR2FtZU1vZGVsTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdHMgfSBmcm9tIFwiLi4vLi4vLi4vbmV0d29yay9IdHRwUmVxdWVzdHNcIjtcclxuaW1wb3J0IEFjdGl2aXRpZXNOb3RpY2VJdGVtIGZyb20gXCIuLi8uLi9BY3Rpdml0aWVzTm90aWNlSXRlbVwiO1xyXG5pbXBvcnQgeyBSZWdQcmVzZW50ZXIgfSBmcm9tIFwiLi4vLi4vUHJlc2VudGVyQ0NWaWV3RmFjdG9yeVwiO1xyXG5pbXBvcnQgeyBOZXdOb3RpY2VWaWV3VHlwZSwgTmV3Tm90aWNlVmlldywgTmV3Tm90aWNlVmlld1Byb3BzLCBOb3RpY2VUeXBlLCBTb3VyY2VWaWV3IH0gZnJvbSBcIi4uLy4uL3ZpZXcvdHlwZS9ub3RpY2UvTmV3Tm90aWNlVmlld1wiO1xyXG5cclxuQFJlZ1ByZXNlbnRlcihOZXdOb3RpY2VWaWV3VHlwZSlcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Tm90aWNlVmlld1ByZXNlbnRlciBleHRlbmRzIFByZXNlbnRlcjxTb3VyY2VWaWV3LCBOZXdOb3RpY2VWaWV3PntcclxuICAgIHN0YXRpYyB1dWlkID0gXCJOZXdOb3RpY2VWaWV3UHJlc2VudGVyXCJcclxuICAgIHByaXZhdGUgX3ZpZXdQcm9wczogTmV3Tm90aWNlVmlld1Byb3BzO1xyXG4gICAgcHJpdmF0ZSBfbm90aWNlVHlwZTogTm90aWNlVHlwZSA9IE5vdGljZVR5cGUuU3lzdGVtTm90aWNlO1xyXG4gICAgcHJpdmF0ZSBfZGVsYXlUaW1lOiBudW1iZXIgPSAwO1xyXG4gICAgcHJpdmF0ZSBfY2xvc2VUaW1lVGlja2VyOiBudW1iZXIgPSAtMTtcclxuICAgIHByaXZhdGUgX2NhbkNsb3NlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLl92aWV3UHJvcHMgPSB7XHJcbiAgICAgICAgICAgIHNvdXJjZVZpZXc6IFNvdXJjZVZpZXcuTWVzc2FnZVZpZXcsXHJcbiAgICAgICAgICAgIG9uTm90aWNlQnV0dG9uQ2xpY2tDYWxsYmFjazogdGhpcy5vbk5vdGljZUJ1dHRvbkNsaWNrQ2FsbGJhY2ssXHJcbiAgICAgICAgICAgIG9uQ2xvc2VCdXR0b25DbGlja0NhbGJhY2s6IHRoaXMub25DbG9zZUJ1dHRvbkNsaWNrQ2FsYmFjayxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIG9uT3Blbihzb3VyY2U6IFNvdXJjZVZpZXcpIHtcclxuICAgICAgICBzdXBlci5vbk9wZW4oc291cmNlKTtcclxuICAgICAgICB0aGlzLl92aWV3UHJvcHMuc291cmNlVmlldyA9IHNvdXJjZTtcclxuICAgICAgICB0aGlzLnZpZXcuc2V0UHJvcHModGhpcy5fdmlld1Byb3BzKTtcclxuICAgICAgICB0aGlzLm9uU2hvdygpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2hvdygpIHtcclxuICAgICAgICBzdXBlci5vblNob3coKTtcclxuICAgICAgICB0aGlzLmluaXRWaWV3KCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25FbnRlckJhY2tncm91bmQoKSB7XHJcbiAgICAgICAgc3VwZXIub25FbnRlckJhY2tncm91bmQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkVudGVyRm9yZWdyb3VuZCgpIHtcclxuICAgICAgICBzdXBlci5vbkVudGVyRm9yZWdyb3VuZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xvc2UoKSB7XHJcbiAgICAgICAgc3VwZXIub25DbG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRWaWV3KCkge1xyXG4gICAgICAgIC8v6YeN572u5Y+v5YWz6Zet54q25oCB5Li6ZmFsc2VcclxuICAgICAgICB0aGlzLl9jYW5DbG9zZSA9IGZhbHNlO1xyXG4gICAgICAgIC8v5qC55o2u5piv5ZCm5piv56ys5LiA5qyh5by56LW357Sn5oCl5YWs5ZGK5Yik5pat5bu26L+f5pe26Ze0XHJcbiAgICAgICAgLy90aGlzLl9kZWxheVRpbWUgPSBHYW1lTW9kZWxNYW5hZ2VyLmdldE5vdGljZVJlYWRlZCgpID8gMCA6IDM7XHJcbiAgICAgICAgdGhpcy5fZGVsYXlUaW1lID0gMDtcclxuICAgICAgICAvL+mHjee9ruaPkOekuuaWh+acrOeKtuaAgVxyXG4gICAgICAgIHRoaXMudmlldy5nZXRDbG9zZVRpcHNMYWJlbCgpLnN0cmluZyA9IFwiXCI7XHJcbiAgICAgICAgLy/liJ3lp4vljJblhazlkYrnsbvlnotcclxuICAgICAgICBpZiAoY2hhbm5lbCA9PSBcImFuZHJvaWRcIikge1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpY2VUeXBlID0gTm90aWNlVHlwZS5BY3R2aXRpZXNOb3RpY2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fbm90aWNlVHlwZSA9IE5vdGljZVR5cGUuU3lzdGVtTm90aWNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL+agueaNruWtmOaho+WIneWni+WMluKAnOS7iuaXpeS4jeWGjeaPkOekuuKAneeahOmAieaLqeahhlxyXG4gICAgICAgIGxldCBhdXRvU2hvdyA9IEdhbWVNb2RlbE1hbmFnZXIuZ2V0QXV0b1Nob3dOb3RpY2UoKTtcclxuICAgICAgICB0aGlzLnZpZXcuZ2V0VGlwc1RvZ2dsZSgpLmlzQ2hlY2tlZCA9ICFhdXRvU2hvdztcclxuICAgICAgICAvL+WIneWni+WMluWFrOWRiuaMiemSrueKtuaAgeWSjOWFrOWRiuWGheWuuVxyXG4gICAgICAgIHRoaXMuc2V0Tm90aWNlU3RhdGUoKTtcclxuICAgICAgICB0aGlzLnNldE5vdGljZUNvbnRlbnQoKTtcclxuICAgICAgICAvL+WIt+aWsOa0u+WKqOWFrOWRiuaMiemSrueahOe6oueCueeKtuaAgVxyXG4gICAgICAgIHRoaXMucmVmcmVzaEFjdGl2aXRpZXNCdXR0b25SZWREb3QoKTtcclxuICAgICAgICAvL+W8gOWQr+WFs+mXreWAkuiuoeaXtlxyXG4gICAgICAgIHRoaXMuc3RhcnRUaW1lVGlja2VyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDorr7nva7lhazlkYrmjInpkq7nirbmgIHlkozlhazlkYrlhoXlrrnmmL7pmpBcclxuICAgICAqL1xyXG4gICAgc2V0Tm90aWNlU3RhdGUoKSB7XHJcbiAgICAgICAgbGV0IG5vZGVzID0gdGhpcy52aWV3LmdldE5vdGljZU5vZGVzKCk7XHJcbiAgICAgICAgbGV0IGJ1dHRvbnMgPSB0aGlzLnZpZXcuZ2V0Tm90aWNlQnV0dG9ucygpO1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5fbm90aWNlVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIE5vdGljZVR5cGUuU3lzdGVtTm90aWNlOi8v57O757uf5YWs5ZGKXHJcbiAgICAgICAgICAgICAgICBub2Rlc1tOb3RpY2VUeXBlLlN5c3RlbU5vdGljZV0uYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIG5vZGVzW05vdGljZVR5cGUuQWN0dml0aWVzTm90aWNlXS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnNbTm90aWNlVHlwZS5TeXN0ZW1Ob3RpY2VdLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJCYWNrZ3JvdW5kXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy52aWV3LmdldEJ1dHRvblNwcml0ZUZyYW1lcygpWzFdO1xyXG4gICAgICAgICAgICAgICAgYnV0dG9uc1tOb3RpY2VUeXBlLkFjdHZpdGllc05vdGljZV0ubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkJhY2tncm91bmRcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLnZpZXcuZ2V0QnV0dG9uU3ByaXRlRnJhbWVzKClbMl07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBOb3RpY2VUeXBlLkFjdHZpdGllc05vdGljZTovL+a0u+WKqOWFrOWRilxyXG4gICAgICAgICAgICAgICAgbm9kZXNbTm90aWNlVHlwZS5TeXN0ZW1Ob3RpY2VdLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgbm9kZXNbTm90aWNlVHlwZS5BY3R2aXRpZXNOb3RpY2VdLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zW05vdGljZVR5cGUuU3lzdGVtTm90aWNlXS5ub2RlLmdldENoaWxkQnlOYW1lKFwiQmFja2dyb3VuZFwiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMudmlldy5nZXRCdXR0b25TcHJpdGVGcmFtZXMoKVswXTtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnNbTm90aWNlVHlwZS5BY3R2aXRpZXNOb3RpY2VdLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJCYWNrZ3JvdW5kXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy52aWV3LmdldEJ1dHRvblNwcml0ZUZyYW1lcygpWzNdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDorr7nva7lhazlkYrlhoXlrrlcclxuICAgICAqL1xyXG4gICAgYXN5bmMgc2V0Tm90aWNlQ29udGVudCgpIHtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMuX25vdGljZVR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBOb3RpY2VUeXBlLlN5c3RlbU5vdGljZTovL+ezu+e7n+WFrOWRilxyXG4gICAgICAgICAgICAgICAgSHR0cFJlcXVlc3RzLmdldE5ld05vdGljZSgpLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuZ2V0Q29udGVudFJpY2hUZXh0KCkuc3RyaW5nID0gcmVzWzBdLm1zZztcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuZ2V0Q29udGVudFJpY2hUZXh0KCkuc3RyaW5nID0gXCI8Y29sb3I9I0ZGMDAwMD7lhazlkYrojrflj5blpLHotKXvvIzor7fmo4Dmn6XnvZHnu5zmiJbnqI3lkI7ph43or5U8Y29sb3IvPlwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgTm90aWNlVHlwZS5BY3R2aXRpZXNOb3RpY2U6Ly/mtLvliqjlhazlkYpcclxuICAgICAgICAgICAgICAgIHRoaXMudmlldy5nZXRBY3Rpdml0aWVzQ29udGVudE5vZGUoKS5yZW1vdmVBbGxDaGlsZHJlbigpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvbmZpZ3MgPSBBY3Rpdml0aWVzSXRlbU1vZGVsTWFuYWdlci5nZXRWYWxpZEFjdGl2aXRpZXNDb25maWdzKCk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmZpZ3NbaV0uY2FuQ2xpY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdGllc0l0ZW1Nb2RlbE1hbmFnZXIuc2V0QWN0aXZpdGllc1JlYWRlZChjb25maWdzW2ldLmFjdGl2aXR5SWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hBY3Rpdml0aWVzQnV0dG9uUmVkRG90KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtID0gY2MuaW5zdGFudGlhdGUodGhpcy52aWV3LmdldEFjdGl2aXRpZXNJdGVtUHJlZmFiKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZ2V0Q29tcG9uZW50KEFjdGl2aXRpZXNOb3RpY2VJdGVtKS5zZXREYXRhKGNvbmZpZ3NbaV0uYWN0aXZpdHlJZCwgY29uZmlnc1tpXS5jYW5DbGljaywgY29uZmlnc1tpXS5kZXNjcmliZSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL+WIt+aWsOa0u+WKqOWIl+ihqOWSjOKAnOa0u+WKqOWFrOWRiuKAneaMiemSrueahOe6oueCuVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0aWVzSXRlbU1vZGVsTWFuYWdlci5zZXRBY3Rpdml0aWVzUmVhZGVkKGNvbmZpZ3NbaV0uYWN0aXZpdHlJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZ2V0Q29tcG9uZW50KEFjdGl2aXRpZXNOb3RpY2VJdGVtKS5yZWZyZXNoUmVkRG90KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaEFjdGl2aXRpZXNCdXR0b25SZWREb3QoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy/miafooYzmtLvliqjpgLvovpFcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlQWN0aXZpdGllc0V2ZW50KGNvbmZpZ3NbaV0sIHRoaXMuX3ZpZXdQcm9wcy5zb3VyY2VWaWV3KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBhcmVudCA9IHRoaXMudmlldy5nZXRBY3Rpdml0aWVzQ29udGVudE5vZGUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5qOA5p+l4oCc5LuK5pel5LiN5YaN5o+Q56S64oCd5Y2V6YCJ5qGG55qE6YCJ5oup54q25oCBXHJcbiAgICAgKi9cclxuICAgIGNoZWNrVGlwc1RvZ2dsZVN0YXRlKCkge1xyXG4gICAgICAgIGxldCBpc0NoZWNrZWQgPSB0aGlzLnZpZXcuZ2V0VGlwc1RvZ2dsZSgpLmlzQ2hlY2tlZDtcclxuICAgICAgICBsZXQgYXV0b1Nob3cgPSBHYW1lTW9kZWxNYW5hZ2VyLmdldEF1dG9TaG93Tm90aWNlKCk7XHJcbiAgICAgICAgaWYgKGF1dG9TaG93ICE9PSAhaXNDaGVja2VkKSB7XHJcbiAgICAgICAgICAgIEdhbWVNb2RlbE1hbmFnZXIuc2V0QXV0b1Nob3dOb3RpY2UoIWlzQ2hlY2tlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5Yi35paw4oCc5rS75Yqo5YWs5ZGK4oCd5oyJ6ZKu55qE57qi54K554q25oCBXHJcbiAgICAgKi9cclxuICAgIHJlZnJlc2hBY3Rpdml0aWVzQnV0dG9uUmVkRG90KCkge1xyXG4gICAgICAgIGxldCBidXR0b25zID0gdGhpcy52aWV3LmdldE5vdGljZUJ1dHRvbnMoKTtcclxuICAgICAgICBsZXQgY29uZmlncyA9IEFjdGl2aXRpZXNJdGVtTW9kZWxNYW5hZ2VyLmdldFZhbGlkQWN0aXZpdGllc0NvbmZpZ3MoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGlzUmVhZGVkID0gQWN0aXZpdGllc0l0ZW1Nb2RlbE1hbmFnZXIuZ2V0QWN0aXZpdGllc1JlYWRlZChjb25maWdzW2ldLmFjdGl2aXR5SWQpO1xyXG4gICAgICAgICAgICBpZiAoIWlzUmVhZGVkKSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zW05vdGljZVR5cGUuQWN0dml0aWVzTm90aWNlXS5ub2RlLmdldENoaWxkQnlOYW1lKFwiUmVkRG90XCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zW05vdGljZVR5cGUuQWN0dml0aWVzTm90aWNlXS5ub2RlLmdldENoaWxkQnlOYW1lKFwiUmVkRG90XCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5qC55o2u5rS75Yqo6YWN572u5aSE55CG5rS75Yqo5LqL5Lu2XHJcbiAgICAgKiBAcGFyYW0gY29uZmlnIOa0u+WKqOmFjee9rlxyXG4gICAgICovXHJcbiAgICBleGVjdXRlQWN0aXZpdGllc0V2ZW50KGNvbmZpZzogQWN0aXZpdGllc0NvbmZpZywgc291cmNlOiBTb3VyY2VWaWV3KSB7XHJcbiAgICAgICAgc3dpdGNoIChjb25maWcuYWN0aXZpdHlUeXBlQ29uZmlnLmFjdGl2aXR5VHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIEFjdGljaXR5VHlwZS5KdW1wVG9UYW9CYW86XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hhbm5lbCA9PSBcIndlY2hhdFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gR2FtZUNlbnRlci5nZXRJbnN0YW5jZSgpLm9wZW5TdWJQcm9ncmFtKEdhbWVDb25maWcueW91WmFuU2hvcEFwcElkKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmFjdGl2aXR5VHlwZUNvbmZpZy50YW9iYW9UZW1wSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRhb2Jhb0NvbmZpZyA9IENvbmZpZ01hbmFnZXIuZ2V0Q29uZmlnKHRhb0Jhb1Nob3BVcmxDb25maWcsIGNvbmZpZy5hY3Rpdml0eVR5cGVDb25maWcudGFvYmFvVGVtcElkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgU0RLLm9wZW5Qcm9ncmFtVjIoR2FtZUNvbmZpZy55b3VaYW5TaG9wQXBwSWQsIHRhb2Jhb0NvbmZpZy55b3VaYW5VcmwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgdGFvYmFvVGVtcElkIGlzIHVuZGVmaW5lZC5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFubmVsID09IFwiYW5kcm9pZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5hY3Rpdml0eVR5cGVDb25maWcudGFvYmFvVGVtcElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0YW9iYW9Db25maWcgPSBDb25maWdNYW5hZ2VyLmdldENvbmZpZyh0YW9CYW9TaG9wVXJsQ29uZmlnLCBjb25maWcuYWN0aXZpdHlUeXBlQ29uZmlnLnRhb2Jhb1RlbXBJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVNb2RlbE1hbmFnZXIuanVtcFRvVGFvYmFvU2hvcCh0YW9iYW9Db25maWcud2Vic2l0ZVVybCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlRoZSB0YW9iYW9UZW1wSWQgaXMgdW5kZWZpbmVkLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIFVJTWFuYWdlci5zaG93VG9hc3QoXCLor6Xlip/og73lnKjlvZPliY3lubPlj7DkuI3lj6/kvb/nlKhcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBBY3RpY2l0eVR5cGUuUGFnZUluR2FtZTpcclxuICAgICAgICAgICAgICAgIGxldCBwYWdlSW5kZXg6IFBhZ2VJbmRleCA9IGNvbmZpZy5hY3Rpdml0eVR5cGVDb25maWcucGFnZUluZGV4O1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhZ2VJbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZVBhZ2VJbkdhbWVFdmVudChwYWdlSW5kZXgsIHNvdXJjZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgcGFnZUluZGV4IGlzIHVuZGVmaW5lZC5cIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWkhOeQhua4uOaIj+WGheeahOa0u+WKqOS6i+S7tlxyXG4gICAgICogQHBhcmFtIGFjdGl2aXR5SWQg5rS75YqoSURcclxuICAgICAqL1xyXG4gICAgZXhlY3V0ZVBhZ2VJbkdhbWVFdmVudChwYWdlSW5kZXg6IFBhZ2VJbmRleCwgc291cmNlOiBTb3VyY2VWaWV3KSB7XHJcbiAgICAgICAgc3dpdGNoIChzb3VyY2UpIHtcclxuICAgICAgICAgICAgY2FzZSBTb3VyY2VWaWV3Lk1lc3NhZ2VWaWV3OlxyXG4gICAgICAgICAgICAgICAgdGhpcy5vbkNsb3NlQnV0dG9uQ2xpY2tDYWxiYWNrKCk7XHJcbiAgICAgICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLkp1bXBUb1ZpZXdJbkdhbWUuZW1pdChwYWdlSW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU291cmNlVmlldy5TZXR0aW5nVmlldzpcclxuICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZUJ1dHRvbkNsaWNrQ2FsYmFjaygpO1xyXG4gICAgICAgICAgICAgICAgR2FtZU1vZGVsTWFuYWdlci5DbG9zZVNldHRpbmdWaWV3LmVtaXQocGFnZUluZGV4KTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW8gOWQr+WPr+WFs+mXreWumuaXtuWZqFxyXG4gICAgICovXHJcbiAgICBzdGFydFRpbWVUaWNrZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2RlbGF5VGltZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NhbkNsb3NlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy52aWV3LmdldENsb3NlVGlwc0xhYmVsKCkuc3RyaW5nID0gXCLngrnlh7vnqbrnmb3ljLrln5/lj6/lhbPpl61cIjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXcuZ2V0Q2xvc2VUaXBzTGFiZWwoKS5zdHJpbmcgPSB0aGlzLl9kZWxheVRpbWUgKyBcIuenkuWQjuWPr+WFs+mXrVwiO1xyXG4gICAgICAgICAgICB0aGlzLl9jbG9zZVRpbWVUaWNrZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWxheVRpbWUgLT0gMTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lVGlja2VyKCk7XHJcbiAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWFrOWRiuaMiemSrueahOeCueWHu+S6i+S7tlxyXG4gICAgICogQHBhcmFtIGluZGV4IOezu+e7n+WFrOWRiuWSjOa0u+WKqOWFrOWRiueahEluZGV4XHJcbiAgICAgKi9cclxuICAgIG9uTm90aWNlQnV0dG9uQ2xpY2tDYWxsYmFjayA9IChpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX25vdGljZVR5cGUgIT09IGluZGV4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vdGljZVR5cGUgPSBpbmRleDtcclxuICAgICAgICAgICAgdGhpcy5zZXROb3RpY2VTdGF0ZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnNldE5vdGljZUNvbnRlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlhbPpl63mjInpkq7nmoTngrnlh7vkuovku7ZcclxuICAgICAqL1xyXG4gICAgb25DbG9zZUJ1dHRvbkNsaWNrQ2FsYmFjayA9ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fY2FuQ2xvc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja1RpcHNUb2dnbGVTdGF0ZSgpO1xyXG4gICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLnNldE5vdGljZVJlYWRlZCh0cnVlKTtcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2Nsb3NlVGltZVRpY2tlcik7XHJcbiAgICAgICAgICAgIHRoaXMudmlldy5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
\ No newline at end of file
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvZ2FtZS91aS9wcmVzZW50ZXIvbm90aWNlL05ld05vdGljZVZpZXdQcmVzZW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrREFBcUQ7QUFDckQseUNBQWdDO0FBQ2hDLDZEQUFzRTtBQUN0RSw4RUFBdUU7QUFDdkUsOEVBQTJFO0FBQzNFLGdGQUE2RTtBQUM3RSx1REFBNkQ7QUFDN0QsMEZBQXlHO0FBQ3pHLHNFQUFtRTtBQUNuRSxnRUFBNkQ7QUFDN0QscUVBQThEO0FBQzlELHlFQUE0RDtBQUM1RCx3RUFBb0k7QUFHcEk7SUFBQSxJQUFxQixzQkFBc0IsR0FBM0MsTUFBcUIsc0JBQXVCLFNBQVEseUJBQW9DO1FBUXBGO1lBQ0ksS0FBSyxFQUFFLENBQUM7WUFOSixnQkFBVyxHQUFlLDBCQUFVLENBQUMsWUFBWSxDQUFDO1lBQ2xELGVBQVUsR0FBVyxDQUFDLENBQUM7WUFDdkIscUJBQWdCLEdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDOUIsY0FBUyxHQUFZLEtBQUssQ0FBQztZQStObkM7OztlQUdHO1lBQ0gsZ0NBQTJCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtnQkFDNUMsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssRUFBRTtvQkFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7aUJBQzNCO1lBQ0wsQ0FBQyxDQUFBO1lBRUQ7O2VBRUc7WUFDSCw4QkFBeUIsR0FBRyxHQUFHLEVBQUU7Z0JBQzdCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDaEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7b0JBQzVCLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLElBQUksQ0FB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UyxHQUFHLElBQUksQ0FBQztnQkFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7YUFDdEQ7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztnQkFDakUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUMzQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztvQkFDckIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUMzQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDWjtRQUNMLENBQUM7S0F3QkosQ0FBQTtJQTFQVSwyQkFBSSxHQUFHLHdCQUF3QixDQUFBO0lBRHJCLHNCQUFzQjtRQUQxQyxxQ0FBWSxDQUFDLGlDQUFpQixDQUFDO09BQ1gsc0JBQXNCLENBMlAxQztJQUFELDZCQUFDO0tBQUE7a0JBM1BvQixzQkFBc0IiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdNYW5hZ2VyIH0gZnJvbSBcInNpbWJhLWNvbmZpZy1tYW5hZ2VyXCI7XHJcbmltcG9ydCB7IFNESyB9IGZyb20gXCJzaW1iYS1zZGtcIjtcclxuaW1wb3J0IHsgQWN0aWNpdHlUeXBlLCBQYWdlSW5kZXggfSBmcm9tIFwiLi4vLi4vLi4vLi4vYXZnL0VkaXRvckVudW1zXCI7XHJcbmltcG9ydCB7IFByZXNlbnRlciB9IGZyb20gXCIuLi8uLi8uLi8uLi9jb21tb24vY2xhc3NiYXNlL1ByZXNlbnRlckJhc2VcIjtcclxuaW1wb3J0IHsgVUlNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvbW1vbi9nYW1lcGxheS9tYW5hZ2Vycy9VSU1hbmFnZXJcIjtcclxuaW1wb3J0IHsgdGFvQmFvU2hvcFVybENvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi8uLi9jb25maWcvVGFvQmFvU2hvcFVybENvbmZpZ1wiO1xyXG5pbXBvcnQgeyBjaGFubmVsLCBHYW1lQ29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0dhbWVDb25maWdcIjtcclxuaW1wb3J0IHsgQWN0aXZpdGllc0NvbmZpZywgQWN0aXZpdGllc0l0ZW1Nb2RlbE1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWwvQWN0aXZpdGllc0l0ZW1Nb2RlbE1hbmFnZXJcIjtcclxuaW1wb3J0IHsgR2FtZU1vZGVsTWFuYWdlciB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbC9HYW1lTW9kZWxNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IEh0dHBSZXF1ZXN0cyB9IGZyb20gXCIuLi8uLi8uLi9uZXR3b3JrL0h0dHBSZXF1ZXN0c1wiO1xyXG5pbXBvcnQgQWN0aXZpdGllc05vdGljZUl0ZW0gZnJvbSBcIi4uLy4uL0FjdGl2aXRpZXNOb3RpY2VJdGVtXCI7XHJcbmltcG9ydCB7IFJlZ1ByZXNlbnRlciB9IGZyb20gXCIuLi8uLi9QcmVzZW50ZXJDQ1ZpZXdGYWN0b3J5XCI7XHJcbmltcG9ydCB7IE5ld05vdGljZVZpZXdUeXBlLCBOZXdOb3RpY2VWaWV3LCBOZXdOb3RpY2VWaWV3UHJvcHMsIE5vdGljZVR5cGUsIFNvdXJjZVZpZXcgfSBmcm9tIFwiLi4vLi4vdmlldy90eXBlL25vdGljZS9OZXdOb3RpY2VWaWV3XCI7XHJcblxyXG5AUmVnUHJlc2VudGVyKE5ld05vdGljZVZpZXdUeXBlKVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdOb3RpY2VWaWV3UHJlc2VudGVyIGV4dGVuZHMgUHJlc2VudGVyPFNvdXJjZVZpZXcsIE5ld05vdGljZVZpZXc+e1xyXG4gICAgc3RhdGljIHV1aWQgPSBcIk5ld05vdGljZVZpZXdQcmVzZW50ZXJcIlxyXG4gICAgcHJpdmF0ZSBfdmlld1Byb3BzOiBOZXdOb3RpY2VWaWV3UHJvcHM7XHJcbiAgICBwcml2YXRlIF9ub3RpY2VUeXBlOiBOb3RpY2VUeXBlID0gTm90aWNlVHlwZS5TeXN0ZW1Ob3RpY2U7XHJcbiAgICBwcml2YXRlIF9kZWxheVRpbWU6IG51bWJlciA9IDA7XHJcbiAgICBwcml2YXRlIF9jbG9zZVRpbWVUaWNrZXI6IG51bWJlciA9IC0xO1xyXG4gICAgcHJpdmF0ZSBfY2FuQ2xvc2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuX3ZpZXdQcm9wcyA9IHtcclxuICAgICAgICAgICAgc291cmNlVmlldzogU291cmNlVmlldy5NZXNzYWdlVmlldyxcclxuICAgICAgICAgICAgb25Ob3RpY2VCdXR0b25DbGlja0NhbGxiYWNrOiB0aGlzLm9uTm90aWNlQnV0dG9uQ2xpY2tDYWxsYmFjayxcclxuICAgICAgICAgICAgb25DbG9zZUJ1dHRvbkNsaWNrQ2FsYmFjazogdGhpcy5vbkNsb3NlQnV0dG9uQ2xpY2tDYWxiYWNrLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgb25PcGVuKHNvdXJjZTogU291cmNlVmlldykge1xyXG4gICAgICAgIHN1cGVyLm9uT3Blbihzb3VyY2UpO1xyXG4gICAgICAgIHRoaXMuX3ZpZXdQcm9wcy5zb3VyY2VWaWV3ID0gc291cmNlO1xyXG4gICAgICAgIHRoaXMudmlldy5zZXRQcm9wcyh0aGlzLl92aWV3UHJvcHMpO1xyXG4gICAgICAgIHRoaXMub25TaG93KCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25TaG93KCkge1xyXG4gICAgICAgIHN1cGVyLm9uU2hvdygpO1xyXG4gICAgICAgIHRoaXMuaW5pdFZpZXcoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkVudGVyQmFja2dyb3VuZCgpIHtcclxuICAgICAgICBzdXBlci5vbkVudGVyQmFja2dyb3VuZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRW50ZXJGb3JlZ3JvdW5kKCkge1xyXG4gICAgICAgIHN1cGVyLm9uRW50ZXJGb3JlZ3JvdW5kKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DbG9zZSgpIHtcclxuICAgICAgICBzdXBlci5vbkNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdFZpZXcoKSB7XHJcbiAgICAgICAgLy/ph43nva7lj6/lhbPpl63nirbmgIHkuLpmYWxzZVxyXG4gICAgICAgIHRoaXMuX2NhbkNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fZGVsYXlUaW1lID0gMDtcclxuICAgICAgICAvL+mHjee9ruaPkOekuuaWh+acrOeKtuaAgVxyXG4gICAgICAgIHRoaXMudmlldy5nZXRDbG9zZVRpcHNMYWJlbCgpLnN0cmluZyA9IFwiXCI7XHJcbiAgICAgICAgLy/liJ3lp4vljJblhazlkYrnsbvlnotcclxuICAgICAgICBpZiAoY2hhbm5lbCA9PSBcImFuZHJvaWRcIikge1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpY2VUeXBlID0gTm90aWNlVHlwZS5BY3R2aXRpZXNOb3RpY2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fbm90aWNlVHlwZSA9IE5vdGljZVR5cGUuU3lzdGVtTm90aWNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL+agueaNruWtmOaho+WIneWni+WMluKAnOS7iuaXpeS4jeWGjeaPkOekuuKAneeahOmAieaLqeahhlxyXG4gICAgICAgIGxldCBhdXRvU2hvdyA9IEdhbWVNb2RlbE1hbmFnZXIuZ2V0QXV0b1Nob3dOb3RpY2UoKTtcclxuICAgICAgICB0aGlzLnZpZXcuZ2V0VGlwc1RvZ2dsZSgpLmlzQ2hlY2tlZCA9ICFhdXRvU2hvdztcclxuICAgICAgICAvL+WIneWni+WMluWFrOWRiuaMiemSrueKtuaAgeWSjOWFrOWRiuWGheWuuVxyXG4gICAgICAgIHRoaXMuc2V0Tm90aWNlU3RhdGUoKTtcclxuICAgICAgICB0aGlzLnNldE5vdGljZUNvbnRlbnQoKTtcclxuICAgICAgICAvL+WIt+aWsOa0u+WKqOWFrOWRiuaMiemSrueahOe6oueCueeKtuaAgVxyXG4gICAgICAgIHRoaXMucmVmcmVzaEFjdGl2aXRpZXNCdXR0b25SZWREb3QoKTtcclxuICAgICAgICAvL+W8gOWQr+WFs+mXreWAkuiuoeaXtlxyXG4gICAgICAgIHRoaXMuc3RhcnRUaW1lVGlja2VyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDorr7nva7lhazlkYrmjInpkq7nirbmgIHlkozlhazlkYrlhoXlrrnmmL7pmpBcclxuICAgICAqL1xyXG4gICAgc2V0Tm90aWNlU3RhdGUoKSB7XHJcbiAgICAgICAgbGV0IG5vZGVzID0gdGhpcy52aWV3LmdldE5vdGljZU5vZGVzKCk7XHJcbiAgICAgICAgbGV0IGJ1dHRvbnMgPSB0aGlzLnZpZXcuZ2V0Tm90aWNlQnV0dG9ucygpO1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5fbm90aWNlVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIE5vdGljZVR5cGUuU3lzdGVtTm90aWNlOi8v57O757uf5YWs5ZGKXHJcbiAgICAgICAgICAgICAgICBub2Rlc1tOb3RpY2VUeXBlLlN5c3RlbU5vdGljZV0uYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIG5vZGVzW05vdGljZVR5cGUuQWN0dml0aWVzTm90aWNlXS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnNbTm90aWNlVHlwZS5TeXN0ZW1Ob3RpY2VdLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJCYWNrZ3JvdW5kXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy52aWV3LmdldEJ1dHRvblNwcml0ZUZyYW1lcygpWzFdO1xyXG4gICAgICAgICAgICAgICAgYnV0dG9uc1tOb3RpY2VUeXBlLkFjdHZpdGllc05vdGljZV0ubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkJhY2tncm91bmRcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLnZpZXcuZ2V0QnV0dG9uU3ByaXRlRnJhbWVzKClbMl07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBOb3RpY2VUeXBlLkFjdHZpdGllc05vdGljZTovL+a0u+WKqOWFrOWRilxyXG4gICAgICAgICAgICAgICAgbm9kZXNbTm90aWNlVHlwZS5TeXN0ZW1Ob3RpY2VdLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgbm9kZXNbTm90aWNlVHlwZS5BY3R2aXRpZXNOb3RpY2VdLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zW05vdGljZVR5cGUuU3lzdGVtTm90aWNlXS5ub2RlLmdldENoaWxkQnlOYW1lKFwiQmFja2dyb3VuZFwiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMudmlldy5nZXRCdXR0b25TcHJpdGVGcmFtZXMoKVswXTtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnNbTm90aWNlVHlwZS5BY3R2aXRpZXNOb3RpY2VdLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJCYWNrZ3JvdW5kXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy52aWV3LmdldEJ1dHRvblNwcml0ZUZyYW1lcygpWzNdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDorr7nva7lhazlkYrlhoXlrrlcclxuICAgICAqL1xyXG4gICAgYXN5bmMgc2V0Tm90aWNlQ29udGVudCgpIHtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMuX25vdGljZVR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBOb3RpY2VUeXBlLlN5c3RlbU5vdGljZTovL+ezu+e7n+WFrOWRilxyXG4gICAgICAgICAgICAgICAgSHR0cFJlcXVlc3RzLmdldE5ld05vdGljZSgpLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuZ2V0Q29udGVudFJpY2hUZXh0KCkuc3RyaW5nID0gcmVzWzBdLm1zZztcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuZ2V0Q29udGVudFJpY2hUZXh0KCkuc3RyaW5nID0gXCI8Y29sb3I9I0ZGMDAwMD7lhazlkYrojrflj5blpLHotKXvvIzor7fmo4Dmn6XnvZHnu5zmiJbnqI3lkI7ph43or5U8Y29sb3IvPlwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgTm90aWNlVHlwZS5BY3R2aXRpZXNOb3RpY2U6Ly/mtLvliqjlhazlkYpcclxuICAgICAgICAgICAgICAgIHRoaXMudmlldy5nZXRBY3Rpdml0aWVzQ29udGVudE5vZGUoKS5yZW1vdmVBbGxDaGlsZHJlbigpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvbmZpZ3MgPSBBY3Rpdml0aWVzSXRlbU1vZGVsTWFuYWdlci5nZXRWYWxpZEFjdGl2aXRpZXNDb25maWdzKCk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmZpZ3NbaV0uY2FuQ2xpY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdGllc0l0ZW1Nb2RlbE1hbmFnZXIuc2V0QWN0aXZpdGllc1JlYWRlZChjb25maWdzW2ldLmFjdGl2aXR5SWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hBY3Rpdml0aWVzQnV0dG9uUmVkRG90KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtID0gY2MuaW5zdGFudGlhdGUodGhpcy52aWV3LmdldEFjdGl2aXRpZXNJdGVtUHJlZmFiKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZ2V0Q29tcG9uZW50KEFjdGl2aXRpZXNOb3RpY2VJdGVtKS5zZXREYXRhKGNvbmZpZ3NbaV0uYWN0aXZpdHlJZCwgY29uZmlnc1tpXS5jYW5DbGljaywgY29uZmlnc1tpXS5kZXNjcmliZSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL+WIt+aWsOa0u+WKqOWIl+ihqOWSjOKAnOa0u+WKqOWFrOWRiuKAneaMiemSrueahOe6oueCuVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0aWVzSXRlbU1vZGVsTWFuYWdlci5zZXRBY3Rpdml0aWVzUmVhZGVkKGNvbmZpZ3NbaV0uYWN0aXZpdHlJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZ2V0Q29tcG9uZW50KEFjdGl2aXRpZXNOb3RpY2VJdGVtKS5yZWZyZXNoUmVkRG90KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaEFjdGl2aXRpZXNCdXR0b25SZWREb3QoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy/miafooYzmtLvliqjpgLvovpFcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlQWN0aXZpdGllc0V2ZW50KGNvbmZpZ3NbaV0sIHRoaXMuX3ZpZXdQcm9wcy5zb3VyY2VWaWV3KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBhcmVudCA9IHRoaXMudmlldy5nZXRBY3Rpdml0aWVzQ29udGVudE5vZGUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5qOA5p+l4oCc5LuK5pel5LiN5YaN5o+Q56S64oCd5Y2V6YCJ5qGG55qE6YCJ5oup54q25oCBXHJcbiAgICAgKi9cclxuICAgIGNoZWNrVGlwc1RvZ2dsZVN0YXRlKCkge1xyXG4gICAgICAgIGxldCBpc0NoZWNrZWQgPSB0aGlzLnZpZXcuZ2V0VGlwc1RvZ2dsZSgpLmlzQ2hlY2tlZDtcclxuICAgICAgICBsZXQgYXV0b1Nob3cgPSBHYW1lTW9kZWxNYW5hZ2VyLmdldEF1dG9TaG93Tm90aWNlKCk7XHJcbiAgICAgICAgaWYgKGF1dG9TaG93ICE9PSAhaXNDaGVja2VkKSB7XHJcbiAgICAgICAgICAgIEdhbWVNb2RlbE1hbmFnZXIuc2V0QXV0b1Nob3dOb3RpY2UoIWlzQ2hlY2tlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5Yi35paw4oCc5rS75Yqo5YWs5ZGK4oCd5oyJ6ZKu55qE57qi54K554q25oCBXHJcbiAgICAgKi9cclxuICAgIHJlZnJlc2hBY3Rpdml0aWVzQnV0dG9uUmVkRG90KCkge1xyXG4gICAgICAgIGxldCBidXR0b25zID0gdGhpcy52aWV3LmdldE5vdGljZUJ1dHRvbnMoKTtcclxuICAgICAgICBsZXQgY29uZmlncyA9IEFjdGl2aXRpZXNJdGVtTW9kZWxNYW5hZ2VyLmdldFZhbGlkQWN0aXZpdGllc0NvbmZpZ3MoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGlzUmVhZGVkID0gQWN0aXZpdGllc0l0ZW1Nb2RlbE1hbmFnZXIuZ2V0QWN0aXZpdGllc1JlYWRlZChjb25maWdzW2ldLmFjdGl2aXR5SWQpO1xyXG4gICAgICAgICAgICBpZiAoIWlzUmVhZGVkKSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zW05vdGljZVR5cGUuQWN0dml0aWVzTm90aWNlXS5ub2RlLmdldENoaWxkQnlOYW1lKFwiUmVkRG90XCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zW05vdGljZVR5cGUuQWN0dml0aWVzTm90aWNlXS5ub2RlLmdldENoaWxkQnlOYW1lKFwiUmVkRG90XCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5qC55o2u5rS75Yqo6YWN572u5aSE55CG5rS75Yqo5LqL5Lu2XHJcbiAgICAgKiBAcGFyYW0gY29uZmlnIOa0u+WKqOmFjee9rlxyXG4gICAgICovXHJcbiAgICBleGVjdXRlQWN0aXZpdGllc0V2ZW50KGNvbmZpZzogQWN0aXZpdGllc0NvbmZpZywgc291cmNlOiBTb3VyY2VWaWV3KSB7XHJcbiAgICAgICAgc3dpdGNoIChjb25maWcuYWN0aXZpdHlUeXBlQ29uZmlnLmFjdGl2aXR5VHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIEFjdGljaXR5VHlwZS5KdW1wVG9UYW9CYW86XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hhbm5lbCA9PSBcIndlY2hhdFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gR2FtZUNlbnRlci5nZXRJbnN0YW5jZSgpLm9wZW5TdWJQcm9ncmFtKEdhbWVDb25maWcueW91WmFuU2hvcEFwcElkKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmFjdGl2aXR5VHlwZUNvbmZpZy50YW9iYW9UZW1wSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRhb2Jhb0NvbmZpZyA9IENvbmZpZ01hbmFnZXIuZ2V0Q29uZmlnKHRhb0Jhb1Nob3BVcmxDb25maWcsIGNvbmZpZy5hY3Rpdml0eVR5cGVDb25maWcudGFvYmFvVGVtcElkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgU0RLLm9wZW5Qcm9ncmFtVjIoR2FtZUNvbmZpZy55b3VaYW5TaG9wQXBwSWQsIHRhb2Jhb0NvbmZpZy55b3VaYW5VcmwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgdGFvYmFvVGVtcElkIGlzIHVuZGVmaW5lZC5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFubmVsID09IFwiYW5kcm9pZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5hY3Rpdml0eVR5cGVDb25maWcudGFvYmFvVGVtcElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0YW9iYW9Db25maWcgPSBDb25maWdNYW5hZ2VyLmdldENvbmZpZyh0YW9CYW9TaG9wVXJsQ29uZmlnLCBjb25maWcuYWN0aXZpdHlUeXBlQ29uZmlnLnRhb2Jhb1RlbXBJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVNb2RlbE1hbmFnZXIuanVtcFRvVGFvYmFvU2hvcCh0YW9iYW9Db25maWcud2Vic2l0ZVVybCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlRoZSB0YW9iYW9UZW1wSWQgaXMgdW5kZWZpbmVkLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIFVJTWFuYWdlci5zaG93VG9hc3QoXCLor6Xlip/og73lnKjlvZPliY3lubPlj7DkuI3lj6/kvb/nlKhcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBBY3RpY2l0eVR5cGUuUGFnZUluR2FtZTpcclxuICAgICAgICAgICAgICAgIGxldCBwYWdlSW5kZXg6IFBhZ2VJbmRleCA9IGNvbmZpZy5hY3Rpdml0eVR5cGVDb25maWcucGFnZUluZGV4O1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhZ2VJbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZVBhZ2VJbkdhbWVFdmVudChwYWdlSW5kZXgsIHNvdXJjZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgcGFnZUluZGV4IGlzIHVuZGVmaW5lZC5cIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWkhOeQhua4uOaIj+WGheeahOa0u+WKqOS6i+S7tlxyXG4gICAgICogQHBhcmFtIGFjdGl2aXR5SWQg5rS75YqoSURcclxuICAgICAqL1xyXG4gICAgZXhlY3V0ZVBhZ2VJbkdhbWVFdmVudChwYWdlSW5kZXg6IFBhZ2VJbmRleCwgc291cmNlOiBTb3VyY2VWaWV3KSB7XHJcbiAgICAgICAgc3dpdGNoIChzb3VyY2UpIHtcclxuICAgICAgICAgICAgY2FzZSBTb3VyY2VWaWV3Lk1lc3NhZ2VWaWV3OlxyXG4gICAgICAgICAgICAgICAgdGhpcy5vbkNsb3NlQnV0dG9uQ2xpY2tDYWxiYWNrKCk7XHJcbiAgICAgICAgICAgICAgICBHYW1lTW9kZWxNYW5hZ2VyLkp1bXBUb1ZpZXdJbkdhbWUuZW1pdChwYWdlSW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU291cmNlVmlldy5TZXR0aW5nVmlldzpcclxuICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZUJ1dHRvbkNsaWNrQ2FsYmFjaygpO1xyXG4gICAgICAgICAgICAgICAgR2FtZU1vZGVsTWFuYWdlci5DbG9zZVNldHRpbmdWaWV3LmVtaXQocGFnZUluZGV4KTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW8gOWQr+WPr+WFs+mXreWumuaXtuWZqFxyXG4gICAgICovXHJcbiAgICBzdGFydFRpbWVUaWNrZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2RlbGF5VGltZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NhbkNsb3NlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy52aWV3LmdldENsb3NlVGlwc0xhYmVsKCkuc3RyaW5nID0gXCLngrnlh7vnqbrnmb3ljLrln5/lj6/lhbPpl61cIjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXcuZ2V0Q2xvc2VUaXBzTGFiZWwoKS5zdHJpbmcgPSB0aGlzLl9kZWxheVRpbWUgKyBcIuenkuWQjuWPr+WFs+mXrVwiO1xyXG4gICAgICAgICAgICB0aGlzLl9jbG9zZVRpbWVUaWNrZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWxheVRpbWUgLT0gMTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lVGlja2VyKCk7XHJcbiAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWFrOWRiuaMiemSrueahOeCueWHu+S6i+S7tlxyXG4gICAgICogQHBhcmFtIGluZGV4IOezu+e7n+WFrOWRiuWSjOa0u+WKqOWFrOWRiueahEluZGV4XHJcbiAgICAgKi9cclxuICAgIG9uTm90aWNlQnV0dG9uQ2xpY2tDYWxsYmFjayA9IChpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX25vdGljZVR5cGUgIT09IGluZGV4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vdGljZVR5cGUgPSBpbmRleDtcclxuICAgICAgICAgICAgdGhpcy5zZXROb3RpY2VTdGF0ZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnNldE5vdGljZUNvbnRlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlhbPpl63mjInpkq7nmoTngrnlh7vkuovku7ZcclxuICAgICAqL1xyXG4gICAgb25DbG9zZUJ1dHRvbkNsaWNrQ2FsYmFjayA9ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fY2FuQ2xvc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja1RpcHNUb2dnbGVTdGF0ZSgpO1xyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VUaW1lVGlja2VyKTtcclxuICAgICAgICAgICAgdGhpcy52aWV3LmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
\ No newline at end of file
......@@ -29,4 +29,4 @@ cc._RF.pop();
});
}
})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvZ2FtZS91aS92aWV3L3R5cGUvRGF0aW5nRXZlbnRTdWJ2aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9EYSxRQUFBLHNCQUFzQixHQUFHLG9CQUFvQixDQUFDIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGlzdEl0ZW1Qcm9wcywgTGlzdFZpZXcsIExpc3RWaWV3UHJvcHMgfSBmcm9tIFwiLi4vLi4vYmFzZXZpZXcvTGlzdFZpZXdcIjtcbmltcG9ydCB7IFB1cmVTdWJ2aWV3IH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvbW1vbi9jbGFzc2Jhc2UvVmlld0Jhc2VcIjtcbmltcG9ydCB7IERhdGluZ0V2ZW50U3RhdHVzIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVsL0RhdGluZ0V2ZW50U2NlbmVNb2RlbFwiO1xuaW1wb3J0IHsgRGF0ZVByZWZhYkRpcmVjdFR5cGUsIFN0ZXBUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL0VudW1zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0aW5nRXZlbnRJdGVtUHJvcHMgZXh0ZW5kcyBMaXN0SXRlbVByb3BzIHtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIC8vIGRhdGU6IHN0cmluZztcbiAgICAvLyB0aW1lOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBEYXRpbmdFdmVudFN0YXR1cztcbiAgICAvLyBsb2NrVGV4dD86IHN0cmluZztcbiAgICBjb3ZlckltYWdlOiBzdHJpbmc7XG4gICAgcG9ydHJhaXRJbWFnZT86IHN0cmluZztcbiAgICAvLyBsaW5lU3R5bGU6IFwibm9uZVwiIHwgMCB8IDE7XG4gICAgLy8gcHJvZ3Jlc3M6IG51bWJlcjtcbiAgICAvLyBzaG93SXRlbUNsZWFyOiBib29sZWFuO1xuICAgIC8vIHNob3dQcm9ncmVzczogYm9vbGVhbjtcbiAgICAvLyByZXZpZXdDb3N0TnVtOiBudW1iZXI7XG4gICAgaXR5cGU6IERhdGVQcmVmYWJEaXJlY3RUeXBlO1xufVxudHlwZSBPcHRpb25DaGFwdGVyID0gKHN0ZXBUeXBlOiBTdGVwVHlwZSkgPT4gdm9pZDtcbmV4cG9ydCBpbnRlcmZhY2UgRGF0aW5nRXZlbnRTdWJ2aWV3UHJvcHMgZXh0ZW5kcyBMaXN0Vmlld1Byb3BzPERhdGluZ0V2ZW50SXRlbVByb3BzPiB7XG4gICAgc2hvd0NvbnRpbnVlOiBib29sZWFuO1xuICAgIGNoYXB0ZXJOYW1lOiBzdHJpbmc7XG4gICAgc2hvd0xlZnQ6IGJvb2xlYW47XG4gICAgc2hvd1JpZ2h0OiBib29sZWFuO1xuICAgIHNob3dDaGFwdGVyQ2xlYXI6IGJvb2xlYW47XG4gICAgb25PcHRpb25DaGFwdGVyOiBPcHRpb25DaGFwdGVyO1xuICAgIGNoYXB0ZXJJbmRleDogbnVtYmVyO1xuICAgIG9uU2Nyb2xsQmVnaW46ICgpID0+IHZvaWQ7XG4gICAgb25TY3JvbGxFbmQ6ICgpID0+IHZvaWQ7XG4gICAgb25MZWZ0QnV0dG9uQ2xpY2tDYWxsYmFjazogKCkgPT4gdm9pZDtcbiAgICBvblJpZ2h0QnV0dG9uQ2xpY2tDYWxsYmFjazogKCkgPT4gdm9pZDtcbiAgICBvbk5hbWVCdXR0b25DbGlja0NhbGxiYWNrOiAoKSA9PiB2b2lkO1xuICAgIG9uRXh0cmFQbG90QnV0dG9uQ2xpY2tDYWxsYmFjazogKCkgPT4gdm9pZDtcbiAgICBvbkNsb3NlU2VjdGlvblZpZXdDYWxsQmFjazogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRMaXN0SXRlbU5vZGUge1xuICAgIGdldEl0ZW1Ob2RlOiAoazogc3RyaW5nKSA9PiBjYy5Ob2RlIHwgdW5kZWZpbmVkO1xuICAgIC8vIHNldEN1cnJFdmVudElkOiAoaWQ6IG51bWJlcikgPT4gdm9pZDtcbiAgICBnZXRMZWZ0QnV0dG9uOiAoKSA9PiBjYy5CdXR0b247XG4gICAgZ2V0TmFtZUJ1dHRvbjogKCkgPT4gY2MuQnV0dG9uO1xuICAgIGdldFJpZ2h0QnV0dG9uOiAoKSA9PiBjYy5CdXR0b247XG4gICAgZ2V0U2Nyb2xsVmlld1Jvb3Q6ICgpID0+IGNjLk5vZGU7XG4gICAgZ2V0U2Nyb2xsVmlld0NvbnRlbnQ6ICgpID0+IGNjLk5vZGU7XG4gICAgZ2V0U2VjdGlvbkJ0bjogKCkgPT4gY2MuUHJlZmFiO1xuICAgIGdldEV4dHJhUGxvdEJ1dHRvbjogKCkgPT4gY2MuTm9kZTtcbn1cblxuZXhwb3J0IHR5cGUgRGF0aW5nRXZlbnRTdWJ2aWV3ID0gTGlzdFZpZXcgJiBQdXJlU3VidmlldzxEYXRpbmdFdmVudFN1YnZpZXdQcm9wcz4gJiBHZXRMaXN0SXRlbU5vZGU7XG5cbmV4cG9ydCBjb25zdCBEYXRpbmdFdmVudFN1YnZpZXdUeXBlID0gXCJEYXRpbmdFdmVudFN1YnZpZXdcIjsiXX0=
\ No newline at end of file
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvZ2FtZS91aS92aWV3L3R5cGUvRGF0aW5nRXZlbnRTdWJ2aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1EYSxRQUFBLHNCQUFzQixHQUFHLG9CQUFvQixDQUFDIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGlzdEl0ZW1Qcm9wcywgTGlzdFZpZXcsIExpc3RWaWV3UHJvcHMgfSBmcm9tIFwiLi4vLi4vYmFzZXZpZXcvTGlzdFZpZXdcIjtcbmltcG9ydCB7IFB1cmVTdWJ2aWV3IH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvbW1vbi9jbGFzc2Jhc2UvVmlld0Jhc2VcIjtcbmltcG9ydCB7IERhdGluZ0V2ZW50U3RhdHVzIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVsL0RhdGluZ0V2ZW50U2NlbmVNb2RlbFwiO1xuaW1wb3J0IHsgRGF0ZVByZWZhYkRpcmVjdFR5cGUsIFN0ZXBUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL0VudW1zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0aW5nRXZlbnRJdGVtUHJvcHMgZXh0ZW5kcyBMaXN0SXRlbVByb3BzIHtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIC8vIGRhdGU6IHN0cmluZztcbiAgICAvLyB0aW1lOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBEYXRpbmdFdmVudFN0YXR1cztcbiAgICAvLyBsb2NrVGV4dD86IHN0cmluZztcbiAgICBjb3ZlckltYWdlOiBzdHJpbmc7XG4gICAgcG9ydHJhaXRJbWFnZT86IHN0cmluZztcbiAgICAvLyBsaW5lU3R5bGU6IFwibm9uZVwiIHwgMCB8IDE7XG4gICAgLy8gcHJvZ3Jlc3M6IG51bWJlcjtcbiAgICAvLyBzaG93SXRlbUNsZWFyOiBib29sZWFuO1xuICAgIC8vIHNob3dQcm9ncmVzczogYm9vbGVhbjtcbiAgICAvLyByZXZpZXdDb3N0TnVtOiBudW1iZXI7XG4gICAgaXR5cGU6IERhdGVQcmVmYWJEaXJlY3RUeXBlO1xufVxudHlwZSBPcHRpb25DaGFwdGVyID0gKHN0ZXBUeXBlOiBTdGVwVHlwZSkgPT4gdm9pZDtcbmV4cG9ydCBpbnRlcmZhY2UgRGF0aW5nRXZlbnRTdWJ2aWV3UHJvcHMgZXh0ZW5kcyBMaXN0Vmlld1Byb3BzPERhdGluZ0V2ZW50SXRlbVByb3BzPiB7XG4gICAgc2hvd0NvbnRpbnVlOiBib29sZWFuO1xuICAgIGNoYXB0ZXJOYW1lOiBzdHJpbmc7XG4gICAgc2hvd0xlZnQ6IGJvb2xlYW47XG4gICAgc2hvd1JpZ2h0OiBib29sZWFuO1xuICAgIHNob3dDaGFwdGVyQ2xlYXI6IGJvb2xlYW47XG4gICAgb25PcHRpb25DaGFwdGVyOiBPcHRpb25DaGFwdGVyO1xuICAgIGNoYXB0ZXJJbmRleDogbnVtYmVyO1xuICAgIG9uU2Nyb2xsQmVnaW46ICgpID0+IHZvaWQ7XG4gICAgb25TY3JvbGxFbmQ6ICgpID0+IHZvaWQ7XG4gICAgb25MZWZ0QnV0dG9uQ2xpY2tDYWxsYmFjazogKCkgPT4gdm9pZDtcbiAgICBvblJpZ2h0QnV0dG9uQ2xpY2tDYWxsYmFjazogKCkgPT4gdm9pZDtcbiAgICBvbk5hbWVCdXR0b25DbGlja0NhbGxiYWNrOiAoKSA9PiB2b2lkO1xuICAgIG9uQ2xvc2VTZWN0aW9uVmlld0NhbGxCYWNrOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldExpc3RJdGVtTm9kZSB7XG4gICAgZ2V0SXRlbU5vZGU6IChrOiBzdHJpbmcpID0+IGNjLk5vZGUgfCB1bmRlZmluZWQ7XG4gICAgLy8gc2V0Q3VyckV2ZW50SWQ6IChpZDogbnVtYmVyKSA9PiB2b2lkO1xuICAgIGdldExlZnRCdXR0b246ICgpID0+IGNjLkJ1dHRvbjtcbiAgICBnZXROYW1lQnV0dG9uOiAoKSA9PiBjYy5CdXR0b247XG4gICAgZ2V0UmlnaHRCdXR0b246ICgpID0+IGNjLkJ1dHRvbjtcbiAgICBnZXRTY3JvbGxWaWV3Um9vdDogKCkgPT4gY2MuTm9kZTtcbiAgICBnZXRTY3JvbGxWaWV3Q29udGVudDogKCkgPT4gY2MuTm9kZTtcbiAgICBnZXRTZWN0aW9uQnRuOiAoKSA9PiBjYy5QcmVmYWI7XG4gICAgZ2V0RXh0cmFQbG90QnV0dG9uOiAoKSA9PiBjYy5Ob2RlO1xufVxuXG5leHBvcnQgdHlwZSBEYXRpbmdFdmVudFN1YnZpZXcgPSBMaXN0VmlldyAmIFB1cmVTdWJ2aWV3PERhdGluZ0V2ZW50U3Vidmlld1Byb3BzPiAmIEdldExpc3RJdGVtTm9kZTtcblxuZXhwb3J0IGNvbnN0IERhdGluZ0V2ZW50U3Vidmlld1R5cGUgPSBcIkRhdGluZ0V2ZW50U3Vidmlld1wiOyJdfQ==
\ No newline at end of file
......@@ -16,7 +16,6 @@ const EditorEnums_1 = require("../../avg/EditorEnums");
const EditorEvents_1 = require("../../avg/EditorEvents");
const GameConstData_1 = require("../../common/gameplay/gamedata/GameConstData");
const GameEnumData_1 = require("../../common/gameplay/gamedata/GameEnumData");
const BedroomItemConfig_1 = require("../../config/BedroomItemConfig");
const DateSceneConfig_1 = require("../../config/DateSceneConfig");
const I18nConfig_1 = require("../../config/I18nConfig");
const ItemConfig_1 = require("../../config/ItemConfig");
......@@ -39,7 +38,6 @@ var GameModelManager;
GameModelManager.MainDatingEventChanged = emitter.createEvent();
GameModelManager.CheckDateGuide = emitter.createEvent(); //约会界面检测引导
GameModelManager.CheckMsgGuide = emitter.createEvent(); //消息列表界面检测引导
GameModelManager.RefreshDiscoverTabRed = emitter.createEvent(); //刷新发现页红点展示
GameModelManager.AutoPopView = emitter.createEvent(); //展示自动弹出界面
GameModelManager.ShowDatingEventArrowGuide = emitter.createEvent(); //约会列表界面展示箭头
GameModelManager.ShowPlotBlocked = emitter.createEvent(); //展示剧情阻断弹窗
......@@ -49,8 +47,6 @@ var GameModelManager;
/**报幕数据准备就绪事件 */
GameModelManager.ForceClickDataReady = emitter.createEvent();
GameModelManager.UnlockItem = emitter.createEvent();
/**回滚数据到指定剧情 */
GameModelManager.RollBackToPlot = emitter.createEvent();
/**回滚剧情数据完成刷新所有状态 */
GameModelManager.RefreshAllStatus = emitter.createEvent();
/**触发死亡选项之后的事件派发 */
......@@ -65,8 +61,6 @@ var GameModelManager;
GameModelManager.SpecialToast = emitter.createEvent();
/**从主界面跳转到游戏页面 */
GameModelManager.JumpToViewInGame = emitter.createEvent();
/**打开番外界面 */
GameModelManager.OpenExtraPlotView = emitter.createEvent();
/**关闭设置界面 */
GameModelManager.CloseSettingView = emitter.createEvent();
let messageScenes;
......@@ -90,12 +84,7 @@ var GameModelManager;
isMainPlot = isChange;
}
GameModelManager.setIsMainPlotSceneType = setIsMainPlotSceneType;
function isGiftUnlock() { return unlockGift; }
GameModelManager.isGiftUnlock = isGiftUnlock;
async function rollbackPhoneCallIfNeeded() {
// if (phoneCallIndex < 0) {
// console.error("Error: no phone call.");
// }
if (phoneCallIndex >= 0 && phoneCallIndex < AVG_1.GameRecord.getCurrentRecordItems().length - 1) {
let ret = await AVG_1.PlotManager.rollbackToIndex(phoneCallIndex);
savePhoneCall();
......@@ -110,10 +99,6 @@ var GameModelManager;
let roleDatasMap = new Map();
let languagesMap = new Map(); //语言
//#endregion
function getCurrentChapterId() {
return GameModelManager.currPlots[0].chapterId;
}
GameModelManager.getCurrentChapterId = getCurrentChapterId;
function getMessageScenesModel() {
return messageScenes;
}
......@@ -300,48 +285,6 @@ var GameModelManager;
return exist;
}
GameModelManager.checkBranchIsInProgress = checkBranchIsInProgress;
function setEventResources(eventId, bgm, backgroud) {
let eventResources = AVG_1.GameRecord.globalVariables["EventResources"];
eventResources = eventResources ? eventResources : [];
let isNewEventId = true;
for (let i = 0; i < eventResources.length; i++) {
if (eventResources[i].eventId == eventId) {
if (bgm) {
eventResources[i].bgm = bgm;
}
if (backgroud) {
eventResources[i].backgroud = backgroud;
}
isNewEventId = false;
break;
}
}
if (isNewEventId) {
eventResources.push({
eventId: eventId,
bgm: bgm,
backgroud: backgroud
});
}
}
GameModelManager.setEventResources = setEventResources;
function getBranchResources(eventId) {
let eventResources = undefined;
let allEventResources = AVG_1.GameRecord.globalVariables["EventResources"];
if (allEventResources) {
for (let i = 0; i < allEventResources.length; i++) {
if (allEventResources[i].eventId == eventId) {
eventResources = allEventResources[i];
break;
}
else {
eventResources = undefined;
}
}
}
return eventResources;
}
GameModelManager.getBranchResources = getBranchResources;
async function initConfigData() {
await simba_config_manager_1.ConfigManager.initConfigData(false);
await initLanguageConfig();
......@@ -780,44 +723,6 @@ var GameModelManager;
AVG_1.GameRecord.autoSave();
}
GameModelManager.setRedPotState = setRedPotState;
/**
* return:1.return all of the plot-unlocked-gifts ids arr;
*/
function getRecordAlreadyUnlockedGifts() {
let rStr = AVG_1.GameRecord.recordVariables["plot_unlocked_gifts"];
let a = [];
if (rStr && "" !== rStr.trim()) {
a = JSON.parse(rStr);
}
return a;
}
GameModelManager.getRecordAlreadyUnlockedGifts = getRecordAlreadyUnlockedGifts;
/**
* return: 1.return the new unlocked gifts ids ;
* 2.if you has showed this ids, you'd use function resumPlotUnlockedGifts to resume the data;
*/
function getNewPlotUnlockedGifts() {
let items = AVG_1.GameRecord.globalVariables["plotunlockgifts"];
items = items === undefined ? [] : items;
return items;
}
GameModelManager.getNewPlotUnlockedGifts = getNewPlotUnlockedGifts;
/**
* resumPlotUnlockedGifts
*/
function resumPlotUnlockedGifts() {
AVG_1.GameRecord.globalVariables["plotunlockgifts"] = [];
AVG_1.GameRecord.autoSave();
}
GameModelManager.resumPlotUnlockedGifts = resumPlotUnlockedGifts;
/**
* checkHasNewGiftUnlocked
*/
function checkHasNewGiftUnlocked() {
let g = getNewPlotUnlockedGifts();
return g && g.length > 0;
}
GameModelManager.checkHasNewGiftUnlocked = checkHasNewGiftUnlocked;
function checkVoiceNeedShowAD(vCfg) {
let ret = false;
if (vCfg) {
......@@ -864,19 +769,6 @@ var GameModelManager;
return curPlot && curPlot.chapterId === GameConstData_1.GameConstData.GAME_CONST_FIRST_CHAPTER_ID;
}
GameModelManager.checkIsDotTutorial = checkIsDotTutorial;
function getRolesByRoleType(roleType) {
let cfg = simba_config_manager_1.ConfigManager.getAllConfig(Role_1.role);
let roleList = [];
for (const key in cfg) {
let _roleData = cfg[key];
if (roleType == _roleData.RoleType) {
roleList.push(_roleData);
}
}
return roleList;
}
GameModelManager.getRolesByRoleType = getRolesByRoleType;
//about lucky draw begin
function getLastFreeTime() {
let time = 0;
let recordKey = "luck_draw_free_time";
......@@ -911,67 +803,6 @@ var GameModelManager;
return false;
}
GameModelManager.checkOverdue = checkOverdue;
function setFreeState(state) {
AVG_1.GameRecord.globalVariables["free_luckyDraw"] = state;
AVG_1.GameRecord.saveRecord();
}
GameModelManager.setFreeState = setFreeState;
function getFreeState() {
let r = AVG_1.GameRecord.globalVariables["free_luckyDraw"];
r = r === Enums_1.FreeState.Cost ? Enums_1.FreeState.Cost : Enums_1.FreeState.Free;
return r;
}
GameModelManager.getFreeState = getFreeState;
function checkLuckyDrawIsFree() {
let ret = false;
let lastFreeTime = getLastFreeTime();
let isNewDay = checkOverdue(lastFreeTime);
let freeState = getFreeState();
if (isNewDay) {
ret = true;
setFreeState(Enums_1.FreeState.Free);
}
else {
ret = freeState === Enums_1.FreeState.Free;
}
return ret;
}
GameModelManager.checkLuckyDrawIsFree = checkLuckyDrawIsFree;
function setLastFreeTime(time) {
let recordKey = "luck_draw_free_time";
AVG_1.GameRecord.globalVariables[recordKey] = time ? time : simba_sdk_1.TimeManager.getTime();
AVG_1.GameRecord.saveRecord();
}
GameModelManager.setLastFreeTime = setLastFreeTime;
function addSkinItemToRecord(itemId) {
let recordKey = "own_skins";
let exist = false;
let recordStr = AVG_1.GameRecord.globalVariables[recordKey];
let skinItemIds = [];
if (recordStr) {
skinItemIds = JSON.parse(recordStr);
exist = skinItemIds.findIndex((v) => v === itemId) !== -1;
}
if (!exist) {
skinItemIds.push(itemId);
AVG_1.GameRecord.globalVariables[recordKey] = JSON.stringify(skinItemIds);
AVG_1.GameRecord.saveRecord();
GameModelManager.RefreshDiscoverTabRed.emit();
}
}
GameModelManager.addSkinItemToRecord = addSkinItemToRecord;
function checkHasOwnedSkin(itemId) {
let recordKey = "own_skins";
let ret = false;
let recordStr = AVG_1.GameRecord.globalVariables[recordKey];
if (recordStr) {
let skinItemIds = [];
skinItemIds = JSON.parse(recordStr);
ret = skinItemIds.findIndex((v) => v === itemId) !== -1;
}
return ret;
}
GameModelManager.checkHasOwnedSkin = checkHasOwnedSkin;
function checkSkinAndGraceCondition(condition) {
let ret = false;
if (condition.groups && condition.groups.length > 0
......@@ -1011,37 +842,10 @@ var GameModelManager;
return level;
}
GameModelManager.getGraceLevelByGraceValue = getGraceLevelByGraceValue;
function checkIsNeedEnterCurDateChapter() {
return isNeedEnterCurDateChapter;
}
GameModelManager.checkIsNeedEnterCurDateChapter = checkIsNeedEnterCurDateChapter;
function setNotNeedEnterCurDateChapter() {
isNeedEnterCurDateChapter = false;
}
GameModelManager.setNotNeedEnterCurDateChapter = setNotNeedEnterCurDateChapter;
function isDiscountAll() {
return false;
}
GameModelManager.isDiscountAll = isDiscountAll;
function stepGetNewPlayerGift(isFirst, time, step) {
let timeRecord = AVG_1.GameRecord.globalVariables["n_p_r_g_s_t"];
timeRecord = timeRecord ? timeRecord : simba_sdk_1.TimeManager.getTime();
time = time ? time : 0;
time = time ? time : timeRecord;
const stepMax = 7;
step = step ? step : 1;
let recordKey = "n_p_r_g_s_p";
let record = AVG_1.GameRecord.globalVariables[recordKey];
record = record ? record : 0;
record += step;
let overTime = checkOverdue(time);
if (record <= stepMax && (overTime || isFirst)) {
AVG_1.GameRecord.globalVariables[recordKey] = record;
AVG_1.GameRecord.globalVariables["n_p_r_g_s_t"] = simba_sdk_1.TimeManager.getTime();
AVG_1.GameRecord.saveRecord();
}
}
GameModelManager.stepGetNewPlayerGift = stepGetNewPlayerGift;
function registerAutoPopView(viewType) {
if (_autoPopView.length === 0) {
_autoPopView.push(viewType);
......@@ -1066,38 +870,6 @@ var GameModelManager;
}
}
GameModelManager.checkAutoPopView = checkAutoPopView;
function checkWelfareNeedGuide() {
let time = AVG_1.GameRecord.globalVariables["sininsevendaydatetime"];
time = time === undefined ? 0 : time;
if (checkOverdue(time)) {
return true;
}
return false;
}
GameModelManager.checkWelfareNeedGuide = checkWelfareNeedGuide;
function markResumeFullEnergy() {
let marked = checkResumeFullEnergyMarked();
if (marked) {
return;
}
let timeKeyStr = "resume_full_energy_time";
AVG_1.GameRecord.globalVariables[timeKeyStr] = simba_sdk_1.TimeManager.getTime();
AVG_1.GameRecord.saveRecord();
}
GameModelManager.markResumeFullEnergy = markResumeFullEnergy;
function checkResumeFullEnergyMarked() {
let mark = false;
let timeKeyStr = "resume_full_energy_time";
let timeRecord = AVG_1.GameRecord.globalVariables[timeKeyStr];
if (timeRecord) {
let over = checkOverdue(timeRecord);
if (!over) {
mark = true;
}
}
return mark;
}
GameModelManager.checkResumeFullEnergyMarked = checkResumeFullEnergyMarked;
function checkIsOverPlotLimitTime() {
let isOver = false;
let timeKeyStr = "plot_limit_time";
......@@ -1137,31 +909,6 @@ var GameModelManager;
return blocked;
}
GameModelManager.checkIsPlotBlocked = checkIsPlotBlocked;
function getCurPlotBlockedId() {
let id = AVG_1.PlotManager.getCurrentPlots()[0].id;
return id;
}
GameModelManager.getCurPlotBlockedId = getCurPlotBlockedId;
function checkIsNeedShowPlotBlocked() {
let show = false;
let curPlot = AVG_1.PlotManager.getCurrentPlots()[0];
if (curPlot && curPlot.plotSceneType === Enums_1.PlotSceneType.BlockPlot) {
let over = checkIsOverPlotLimitTime();
if (!over) {
show = true;
}
}
return show;
}
GameModelManager.checkIsNeedShowPlotBlocked = checkIsNeedShowPlotBlocked;
function isPlotBlockedOrToBeContinued() {
let isPlotBolcked = checkIsPlotBlocked();
let p = AVG_1.PlotManager.getCurrentPlots()[0];
let isToBeContinued = p && p.id === AVG_1.SpecialPlotId.ToBeContinued;
let preConditionFlag = isPlotBolcked || isToBeContinued;
return preConditionFlag;
}
GameModelManager.isPlotBlockedOrToBeContinued = isPlotBlockedOrToBeContinued;
function getCurMainLinePlotId() {
let p = AVG_1.PlotManager.getCurrentPlots()[0];
return p ? p.id : 0;
......@@ -1181,24 +928,6 @@ var GameModelManager;
}
GameModelManager.pushTipAddGracePlot = pushTipAddGracePlot;
/**
* 根据卧室物品Id获取对应的淘宝商品类型
* @param itemId 卧室物品Id
* @returns 返回值为卧室物品对应的淘宝商品类型
*/
function getTypeByBedroomItemId(itemId) {
let type = -1;
let cfg = simba_config_manager_1.ConfigManager.getAllConfig(BedroomItemConfig_1.bedroomItemConfig);
if (cfg) {
for (const id in cfg) {
if (cfg[id].bedroomItemId == itemId) {
type = cfg[id].itemType;
}
}
}
return type;
}
GameModelManager.getTypeByBedroomItemId = getTypeByBedroomItemId;
/**
* 根据商品类型获得该商品对应的淘宝地址链接
* @param type 商品类型
* @returns 返回值为商品类型对应的商品地址
......@@ -1335,44 +1064,6 @@ var GameModelManager;
return autoShow;
}
GameModelManager.getAutoShowNotice = getAutoShowNotice;
/**
* 设置是否自动弹出紧急公告界面
* @param autoShow 是否自动弹出紧急公告界面
*/
function setUrgentNoticeInfo(noticeInfo) {
AVG_1.GameRecord.globalVariables["UrgentNoticeInfo"] = noticeInfo;
AVG_1.GameRecord.saveRecord();
}
GameModelManager.setUrgentNoticeInfo = setUrgentNoticeInfo;
/**
* 获取是否自动弹出紧急公告界面
* @returns 返回值为是否自动弹出紧急公告界面
*/
function getUrgentNoticeInfo() {
let noticeInfo = AVG_1.GameRecord.globalVariables["UrgentNoticeInfo"];
noticeInfo = noticeInfo ? noticeInfo : { readed: false, autoShow: true };
return noticeInfo;
}
GameModelManager.getUrgentNoticeInfo = getUrgentNoticeInfo;
/**
* 设置是否自动弹出紧急公告界面
* @param autoShow 是否自动弹出紧急公告界面
*/
function setNoticeReaded(readed) {
AVG_1.GameRecord.globalVariables["NoticeReaded"] = readed;
AVG_1.GameRecord.saveRecord();
}
GameModelManager.setNoticeReaded = setNoticeReaded;
/**
* 获取是否自动弹出紧急公告界面
* @returns 返回值为是否自动弹出紧急公告界面
*/
function getNoticeReaded() {
let readed = AVG_1.GameRecord.globalVariables["NoticeReaded"];
readed = readed ? readed : false;
return readed;
}
GameModelManager.getNoticeReaded = getNoticeReaded;
})(GameModelManager = exports.GameModelManager || (exports.GameModelManager = {}));
cc._RF.pop();
\ No newline at end of file
......@@ -33,7 +33,6 @@ const DatingEventSubview_1 = require("../view/type/DatingEventSubview");
const DatingEventView_1 = require("../view/type/DatingEventView");
const AlertDialogViewPresenter_1 = require("./AlertDialogViewPresenter");
const DatingScenePresenter_1 = require("./DatingScenePresenter");
const ExtraPlotViewPresenter_1 = require("./ExtraPlotViewPresenter");
const GuideViewPresenter_1 = require("./GuideViewPresenter");
let DatingEventViewPresenter = /** @class */ (() => {
let DatingEventViewPresenter = class DatingEventViewPresenter extends PresenterBase_1.Presenter {
......@@ -296,9 +295,6 @@ let DatingEventSubpresenter = /** @class */ (() => {
})
.start();
};
this.onExtraPlotButtonClickCallback = () => {
UIManager_1.UIManager.pushPresenter(ExtraPlotViewPresenter_1.default, undefined);
};
}
sceneModelToViewModel(item, index) {
this._modelMap[item.id.toString()] = item;
......@@ -378,7 +374,6 @@ let DatingEventSubpresenter = /** @class */ (() => {
onLeftButtonClickCallback: this.onLeftButtonClickCallback,
onRightButtonClickCallback: this.onRightButtonClickCallback,
onNameButtonClickCallback: this.onNameButtonClickCallback,
onExtraPlotButtonClickCallback: this.onExtraPlotButtonClickCallback,
onCloseSectionViewCallBack: this.onCloseSectionViewCallBack
});
}
......@@ -474,11 +469,6 @@ let DatingEventSubpresenter = /** @class */ (() => {
this._disposable.add(GameModelManager_1.GameModelManager.RefreshAllStatus.on(this.onRefreshAllStatus));
this._disposable.add(GameModelManager_1.GameModelManager.CloseDatingSceneView.on(this.onCloseDatingSceneView));
this._disposable.add(GameModelManager_1.GameModelManager.CloseExtraSceneView.on(this.onCloseExtraSceneView));
this._disposable.add(GameModelManager_1.GameModelManager.OpenExtraPlotView.on(this.onExtraPlotButtonClickCallback));
// let isNeedEnterCurChapter = GameModelManager.checkIsNeedEnterCurDateChapter();
// if (isNeedEnterCurChapter) {
// this.selectCurChapter();
// }
this.selectCurChapter();
if (!this.view.isHidden) {
this.refreshMaxChapterIndex();
......
......@@ -22,7 +22,6 @@ const GameConstData_1 = require("../../../common/gameplay/gamedata/GameConstData
const UIManager_1 = require("../../../common/gameplay/managers/UIManager");
const DateSceneConfig_1 = require("../../../config/DateSceneConfig");
const Enums_1 = require("../../Enums");
const CDKeyEventManager_1 = require("../../model/CDKeyEventManager");
const DatingEventSceneModel_1 = require("../../model/DatingEventSceneModel");
const GameModelManager_1 = require("../../model/GameModelManager");
const PresenterCCViewFactory_1 = require("../PresenterCCViewFactory");
......@@ -81,38 +80,6 @@ let DatingScenePresenter = /** @class */ (() => {
this._completingPlot = false;
this.execPlot();
};
this.onClickRollBackBtn = (pid) => {
CDKeyEventManager_1.default.getInstance().shiftCDKeyRemovePlotAD();
let removeAdCardNum = CDKeyEventManager_1.default.getInstance().checkCDKeyRemovePlotAD();
let temp = {
dataptr: {},
titlecontent: "此功能不可逆",
content: "使用传送门会清掉此章节到已解锁最新章节之间的剧情存档和剧情内产生的数值,<color=red>且不可逆</color>,确定使用传送门吗?",
ishasad: !(removeAdCardNum > 0),
istwobtn: true,
adconfig: "inject_fruit",
hasBanner: false,
callback: async (type, ret) => {
if (ret) {
let retainVar = this.getRetainVarKeyArr();
await AVG_1.PlotManager.rollbackToPlot(pid, false, retainVar);
this.rollBackDateAdArray(pid);
AVG_1.GameRecord.saveRecord();
this._showScrollView = !this._showScrollView;
this.view.closeView();
await GameModelManager_1.GameModelManager.init((value) => {
});
GameModelManager_1.GameModelManager.setIsChangePlotSceneType(true);
UIManager_1.UIManager.showSceneToast("数据刷新完成");
let isSpecialScene = this._model.id === this._specialDealSceneId;
this._showBackBtn = !(isSpecialScene && this._model.status === DatingEventSceneModel_1.DatingEventStatus.InProgress);
this.view.showBackBtn(this._showBackBtn);
GameModelManager_1.GameModelManager.RefreshAllStatus.emit();
}
}
};
UIManager_1.UIManager.pushPresenter(AlertDialogViewPresenter_1.default, temp);
};
this.onDeadEvent = (pid) => {
if (this._model.status == DatingEventSceneModel_1.DatingEventStatus.Completed) {
let temp = {
......@@ -257,7 +224,6 @@ let DatingScenePresenter = /** @class */ (() => {
bgPath = "textures/background/dating_event/" + bgPath;
return this.view.setBackgroundEffect(bgPath);
}));
this._disposable.add(GameModelManager_1.GameModelManager.RollBackToPlot.on(this.onClickRollBackBtn));
this._showScrollView = false;
this._disposable.add(GameModelManager_1.GameModelManager.DeadEvent.on(this.onDeadEvent));
this._disposable.add(GameModelManager_1.GameModelManager.SpecialToast.on(this.onSpecialToast));
......
......@@ -120,10 +120,6 @@ let MainViewPresenter = /** @class */ (() => {
}
}
};
this.onRefreshDiscoveryRedDot = () => {
this._viewProps.discoverRedDot = !GameModelManager_1.GameModelManager.checkResumeFullEnergyMarked();
this.view.setProps(this._viewProps);
};
this.onMainTabForceClick = (param) => {
UIManager_1.UIManager.popToPresenter(this);
let index = param.index;
......@@ -355,7 +351,6 @@ let MainViewPresenter = /** @class */ (() => {
this._subPresenters[0].open(viewContainer, undefined);
this.dealTabGuide(Enums_1.MainTabs.messageTab);
this._viewProps.selectedTab = Enums_1.MainTabs.messageTab;
this._disposable.add(GameModelManager_1.GameModelManager.RefreshDiscoverTabRed.on(this.onRefreshDiscoveryRedDot));
this._disposable.add(GameModelManager_1.GameModelManager.ShowPlotBlocked.on(this.onShowPlotBlocked));
this._disposable.add(GameModelManager_1.GameModelManager.AutoPopView.on(this.onAutoPopView));
this._disposable.add(GameModelManager_1.GameModelManager.UnlockItem.on(this.onUnlockItem));
......
......@@ -48,7 +48,6 @@ let NewNoticeViewPresenter = /** @class */ (() => {
this.onCloseButtonClickCalback = () => {
if (this._canClose) {
this.checkTipsToggleState();
GameModelManager_1.GameModelManager.setNoticeReaded(true);
clearTimeout(this._closeTimeTicker);
this.view.close();
}
......@@ -81,8 +80,6 @@ let NewNoticeViewPresenter = /** @class */ (() => {
initView() {
//重置可关闭状态为false
this._canClose = false;
//根据是否是第一次弹起紧急公告判断延迟时间
//this._delayTime = GameModelManager.getNoticeReaded() ? 0 : 3;
this._delayTime = 0;
//重置提示文本状态
this.view.getCloseTipsLabel().string = "";
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!