Files
fc/dev/project/library/imports/10/106ec555-1c09-4514-ae79-27c43590e724.js
2026-05-24 10:21:26 +08:00

210 lines
6.7 KiB
JavaScript

"use strict";
cc._RF.push(module, '106ecVVHAlFFK55J8Q1kOck', 'halidom_model');
// Scripts/mod/home/base_kernel/halidom_model.js
"use strict";
var BridgeClass = require("bridge.class");
var HalidomConst = require("halidom_const");
var HeroController = require("hero_controller");
var HalidomController = require("halidom_controller");
var RoleController = require("role_controller");
var HalidomEvent = require("halidom_event");
var HeroConst = require("hero_const");
var HalidomModel = cc.Class({
"extends": BridgeClass,
ctor: function ctor() {
this.ctrl = HalidomController.getInstance();
},
properties: {},
initConfig: function initConfig() {
this.all_halidom_data = [];
this.halidom_red_list = [];
},
// 设置圣物数据
setAllHalidomData: function setAllHalidomData(data_list) {
this.all_halidom_data = [];
for (var k in data_list) {
var hData = data_list[k];
var HalidomVo = require('halidom_vo');
var halidom_vo = new HalidomVo();
halidom_vo.updateData(hData);
this.all_halidom_data.push(halidom_vo);
}
},
// 更新某一圣物数据(也可能是新增)
updateHalidomData: function updateHalidomData(data) {
var is_have = false;
for (var k in this.all_halidom_data) {
var halidom_vo = this.all_halidom_data[k];
if (halidom_vo.id == data.id) {
is_have = true;
halidom_vo.updateData(data);
break;
}
}
if (!is_have) {
var HalidomVo = require('halidom_vo');
var _halidom_vo = new HalidomVo();
_halidom_vo.updateData(data);
this.all_halidom_data.push(_halidom_vo);
}
return is_have;
},
getAllHaildomData: function getAllHaildomData() {
return this.all_halidom_data;
},
// 根据id获取圣物数据
getHalidomDataById: function getHalidomDataById(id) {
for (var k in this.all_halidom_data) {
var halidom_vo = this.all_halidom_data[k];
if (halidom_vo.id == id) {
return halidom_vo;
}
}
return {};
},
// 根据阵营id获取圣物数据
getHalidomDataByCampType: function getHalidomDataByCampType(camp_type) {
for (var k in this.all_halidom_data) {
var halidom_vo = this.all_halidom_data[k];
var halidom_cfg = game.configs.halidom_data.data_base[halidom_vo.id];
if (halidom_cfg && halidom_cfg.camp == camp_type) {
return halidom_vo;
}
}
},
// 根据id判断圣物是否解锁
checkHalidomIsUnlock: function checkHalidomIsUnlock(id) {
var is_unlock = false;
for (var k in this.all_halidom_data) {
var halidom_vo = this.all_halidom_data[k];
if (halidom_vo.id == id) {
is_unlock = true;
break;
}
}
return is_unlock;
},
// 获取圣物是否开启
checkHalidomIsOpen: function checkHalidomIsOpen(not_tips) {
if (!game.configs.halidom_data) {
return;
}
var role_vo = RoleController.getInstance().getRoleVo();
if (game.configs.halidom_data) {
var _limit_lv_cfg = game.configs.halidom_data.data_const["halidom_open_lev"];
if (_limit_lv_cfg && role_vo && _limit_lv_cfg.val <= role_vo.lev) {
return true;
}
}
if (!not_tips && limit_lv_cfg) {
nx.tbox(limit_lv_cfg.desc);
}
return false;
},
//@ 红点相关
updateHalidomRedStatus: function updateHalidomRedStatus(bid, status) {
this.halidom_red_list[bid] = status;
gcore.GlobalEvent.fire(HalidomEvent.Update_Halidom_Red_Event, bid, status);
},
getHalidomRedStatus: function getHalidomRedStatus() {
var red_status = false;
for (var bid in this.halidom_red_list) {
var status = this.halidom_red_list[bid];
if (status == true) {
red_status = true;
break;
}
}
return red_status;
},
// 获取圣物红点状态
getHalidomRedStatusByRedBid: function getHalidomRedStatusByRedBid(bid) {
return this.halidom_red_list[bid] || false;
},
// 计算一下红点数据
calculateHalidomRedStatus: function calculateHalidomRedStatus() {
// if( !game.configs.halidom_data ){
// return;
// }
// if (!this.checkHalidomIsOpen(true)) return;
// for (let k in this.all_halidom_data) {
// let halidom_vo = this.all_halidom_data[k];
// halidom_vo.checkHalidomRedStatus();
// }
},
checkHalidomRedStatus: function checkHalidomRedStatus() {
if (!this.checkHalidomIsOpen(true)) return;
if (!game.configs.halidom_data) {
return;
}
//是否有可以解锁的圣物
var unlock_red_status = false;
for (var k in game.configs.halidom_data.data_base) {
var v = game.configs.halidom_data.data_base[k];
if (this.checkHalidomIsCanUnlock(v.id)) {
unlock_red_status = true;
break;
}
}
this.updateHalidomRedStatus(HeroConst.RedPointType.eRPHalidom_Unlock, unlock_red_status);
//是否有可以升级的圣物
var lvup_red_status = false;
for (var _k in this.all_halidom_data) {
var halidom_vo = this.all_halidom_data[_k];
if (halidom_vo.getRedStatusByType(HalidomConst.Red_Type.Lvup)) {
lvup_red_status = true;
break;
}
}
this.updateHalidomRedStatus(HeroConst.RedPointType.eRPHalidom_Lvup, lvup_red_status);
// 是否有可以进阶的圣物
var step_red_status = false;
for (var _k2 in this.all_halidom_data) {
var _halidom_vo2 = this.all_halidom_data[_k2];
if (_halidom_vo2.getRedStatusByType(HalidomConst.Red_Type.Step)) {
step_red_status = true;
break;
}
}
this.updateHalidomRedStatus(HeroConst.RedPointType.eRPHalidom_Step, step_red_status);
},
// 根据圣物id判断是否满足解锁条件
checkHalidomIsCanUnlock: function checkHalidomIsCanUnlock(id) {
var is_can_unlock = false;
if (this.checkHalidomIsOpen(true) && !this.checkHalidomIsUnlock(id)) {
var base_cfg = game.configs.halidom_data.data_base[id];
if (base_cfg) {
is_can_unlock = true;
var hero_array = HeroController.getInstance().getModel().getAllHeroArray();
var hero_size = hero_array.length;
for (var k in base_cfg.loss) {
var v = base_cfg.loss[k];
var camp = v[1];
var star = v[2];
var num = v[3];
var have_num = 0;
for (var i = 1; i <= hero_size; i++) {
var hero_vo = hero_array[i - 1];
if (hero_vo.is_lock == 0 && hero_vo.is_in_form == 0 && hero_vo.camp_type == camp && hero_vo.star == star) {
have_num = have_num + 1;
}
if (have_num >= num) {
break;
}
}
if (have_num < num) {
is_can_unlock = false;
break;
}
}
}
}
return is_can_unlock;
}
});
cc._RF.pop();