// ================================================================ // // 条件判断集 // // ================================================================ const RoleController = require( "role_controller" ); const HeroController = require( "hero_controller" ); const BattleDramaController = require( "battle_drama_controller" ); const BackPackController = require( "backpack_controller" ); // 条件关键字 const CKeys = [ "dun", "lev", "maxlev", "maxdun", "star", "guild_lv", "open_day", "world_lev", "building", "guide_close", "hopen", "item", ]; // 条件判断方法集合 const CFMap = { // 关卡条件 "dun": function ( _val ) { let dun = parseInt( _val ) || 0; let dt = BattleDramaController.getInstance().getModel().getDramaData(); if( dt.max_dun_id < dun ) { let cfg = game.configs.dungeon_data.data_drama_dungeon_info[ dun ]; return nx.text.format( "LockMaxDun", cfg ? cfg.name : "" ); } }, // 等级条件 "lev": function ( _val ) { let role = RoleController.getInstance().getRoleVo(); if( role && role.lev < _val ) { return nx.text.format( "LockRoleLevel", _val ); } }, // 等级限制条件 "maxlev": function ( _val ) { let role = RoleController.getInstance().getRoleVo(); if( role && role.lev >= _val ) { return nx.text.format( "LockRoleMaxLevel", _val ); } }, // 关卡限制条件 "maxdun": function ( _val ) { let dun = parseInt( _val ) || 0; let dt = BattleDramaController.getInstance().getModel().getDramaData(); if( dt.max_dun_id >= dun ) { let cfg = game.configs.dungeon_data.data_drama_dungeon_info[ dun ]; return nx.text.format( "LockMaxDun", cfg ? cfg.name : "" ); } }, // 星级条件 "star": function ( _val ) { let bag = HeroController.getInstance().getModel(); if( bag ){ let partners = bag.getAllHeroArray(); let count = 0; partners.forEach( _part =>{ if( _part.star >= _val ){ count++; } } ) if( bag && count <= 0 ) { return nx.text.format( "LockHeroStar", _val ); } } }, // 工会等级条件 "guild_lv": function ( _val ) { let role = RoleController.getInstance().getRoleVo(); if( role && role.guild_lev < _val ) { return nx.text.format( "LockGuildLevel", _val ); } }, // 开服天数条件 "open_day": function ( _val ) { let role = RoleController.getInstance().getRoleVo(); if( role && role.open_day < _val ) { return nx.text.format( "LockOpenDay", _val ); } }, // 世界等级条件 "world_lev": function ( _val ) { let level = RoleController.getInstance().getModel().getWorldLev(); if( level < _val ) { return nx.text.format( "LockWorldLevel", _val ); } }, // 待废弃:建筑条件 "building": function ( _val ) { nx.error( "解锁判断: building条件需要重建,目前废弃!" ); return; }, // 引导忽略 "guide_close": function( _val ) { let closed = !nx.bridge.plot || !nx.bridge.plot.opened; if( !!_val == closed ) { return; } return nx.text.getKey( "LockGuideIgnored" ); }, // HOpen "hopen": function( _val ) { let open = nx.bridge.vget( "HOpened" ); let key = open ? 1 : 0; if( key == _val ) { return; } return nx.text.getKey( "LockGuideHClose" ); }, // 背包道具数量 "item": function( _val ) { let tmp = `${_val}`; let arr = tmp.split( "#" ); let model = BackPackController.getInstance().getModel(); let count = model ? model.getBackPackItemNumByBid( arr[0] ) : 0; let need = arr[1] || 0; if( count < need ) { return nx.text.getKey( "LockItemCount" ); } }, }; // 别名 CFMap["dungeon"] = CFMap["dun"]; CFMap["guild"] = CFMap["guild_lv"]; module.exports = { CFMap, CKeys, };