247 lines
7.1 KiB
JavaScript
247 lines
7.1 KiB
JavaScript
|
import GameModel from "../ts/core/GameModel";
|
||
|
import MsgAlert from "../ts/game/msg/MsgAlert";
|
||
|
import FGAlert from "../ts/gear_2.3.4/fgui/FGAlert";
|
||
|
import PetRefine from "../ts/petRefine"
|
||
|
const jll_id = 10118; /* 金柳露id */
|
||
|
|
||
|
cc.Class({
|
||
|
extends: cc.Component,
|
||
|
properties: {
|
||
|
left_panel: cc.Node,
|
||
|
right_panel: cc.Node,
|
||
|
sprite_atlas: cc.SpriteAtlas,
|
||
|
bag_item: cc.Node,
|
||
|
jll_count_label: cc.Label,
|
||
|
washLevel: 1,
|
||
|
tipWarn: false,
|
||
|
curLevel: 0,
|
||
|
tipHighWarn: false,
|
||
|
inCD: false
|
||
|
},
|
||
|
|
||
|
/*
|
||
|
* 顯示界面
|
||
|
* @param pet_logic 寵物logic
|
||
|
*/
|
||
|
|
||
|
onLoad() {
|
||
|
this.aptits = ["<color=#009F3C>資質平平</color>", "<color=#5666F4>出類拔萃</color>", "<color=#D887F5>妙領天機</color>", "<color=#B2521B>萬中無一</color>"];
|
||
|
// this.petLogic = new logic.PetLogic();
|
||
|
},
|
||
|
|
||
|
show(pet_logic) {
|
||
|
this.node.active = true;
|
||
|
this.pet_logic = pet_logic;
|
||
|
PetRefine.Instance.petLogic = pet_logic;
|
||
|
let resid = this.pet_logic.resid;
|
||
|
let info = {
|
||
|
cur_aptitude: this.pet_logic.aptitude,
|
||
|
rate: this.pet_logic.rate,
|
||
|
/* cur_hp: this.pet_logic.cur_hp,
|
||
|
cur_mp: this.pet_logic.cur_mp,
|
||
|
cur_atk: this.pet_logic.cur_atk,
|
||
|
cur_spd: this.pet_logic.cur_spd, */
|
||
|
cur_hp: this.pet_logic.hp,
|
||
|
cur_mp: this.pet_logic.mp,
|
||
|
cur_atk: this.pet_logic.atk,
|
||
|
cur_spd: this.pet_logic.spd,
|
||
|
max_rate: this.pet_logic.maxRate
|
||
|
};
|
||
|
this.curLevel = info.cur_aptitude
|
||
|
this.showPropertyPanel(info, this.left_panel);
|
||
|
for (let node of this.right_panel.children)
|
||
|
node.active = false;
|
||
|
this.showBagItem();
|
||
|
},
|
||
|
|
||
|
showBagItem() {
|
||
|
let logic = this.bag_item.getComponent('BagItem');
|
||
|
logic.loadInfo({ itemid: jll_id });
|
||
|
logic.item_selected.opacity = 0;
|
||
|
let jll_count = GameModel.player.itemList[jll_id] || 0;
|
||
|
var need = this.washLevel == 1 ? "3" : "30"
|
||
|
this.jll_count_label.string = jll_count + '/' + need;
|
||
|
},
|
||
|
|
||
|
unshow() {
|
||
|
this.node.active = false;
|
||
|
for (let node of this.right_panel.children)
|
||
|
node.active = false;
|
||
|
if (this.close_callback)
|
||
|
this.close_callback();
|
||
|
},
|
||
|
|
||
|
/*
|
||
|
* 顯示屬性信息
|
||
|
* @param info 資訊
|
||
|
* @param panel 面板
|
||
|
*/
|
||
|
showPropertyPanel(info, panel) {
|
||
|
//if (!info.max_rate) {
|
||
|
for (let key in GameModel.conf_pet) {
|
||
|
if (GameModel.conf_pet.hasOwnProperty(key)) {
|
||
|
let item = GameModel.conf_pet[key];
|
||
|
if (key == this.pet_logic.dataid) {
|
||
|
//info.max_rate = JSON.parse(item.rate)[1];
|
||
|
info.max_hp = JSON.parse(item.hp)[1];
|
||
|
info.max_mp = JSON.parse(item.mp)[1];
|
||
|
info.max_atk = JSON.parse(item.atk)[1];
|
||
|
info.max_spd = JSON.parse(item.spd)[1];
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//}
|
||
|
let zizhi_lable = panel.getChildByName('TextScore').getComponent(cc.RichText);
|
||
|
zizhi_lable.string = this.aptits[info.cur_aptitude] || this.aptits[0];
|
||
|
|
||
|
let hp_progress = panel.getChildByName('hpProgress');
|
||
|
let hp_label = hp_progress.getChildByName('label').getComponent(cc.Label);
|
||
|
hp_progress.getComponent(cc.ProgressBar).progress = (info.cur_hp == 0) ? 0 : (info.cur_hp / info.max_hp);
|
||
|
hp_label.string = info.cur_hp + '/' + info.max_hp;
|
||
|
|
||
|
let mp_progress = panel.getChildByName('mpProgress');
|
||
|
let mp_label = mp_progress.getChildByName('label').getComponent(cc.Label);
|
||
|
mp_progress.getComponent(cc.ProgressBar).progress = (info.cur_mp == 0) ? 0 : (info.cur_mp / info.max_mp);
|
||
|
mp_label.string = info.cur_mp + '/' + info.max_mp;
|
||
|
|
||
|
let att_progress = panel.getChildByName('attProgress');
|
||
|
let att_label = att_progress.getChildByName('label').getComponent(cc.Label);
|
||
|
att_progress.getComponent(cc.ProgressBar).progress = (info.cur_atk == 0) ? 0 : (info.cur_atk / info.max_atk);
|
||
|
att_label.string = info.cur_atk + '/' + info.max_atk;
|
||
|
|
||
|
let spe_progress = panel.getChildByName('speProgress');
|
||
|
let spe_label = spe_progress.getChildByName('label').getComponent(cc.Label);
|
||
|
spe_progress.getComponent(cc.ProgressBar).progress = (info.cur_spd == 0) ? 0 : (info.cur_spd / info.max_spd);
|
||
|
spe_label.string = info.cur_spd + '/' + info.max_spd;
|
||
|
|
||
|
let rate_label = panel.getChildByName('RateLabel').getComponent(cc.Label);
|
||
|
|
||
|
rate_label.string = info.rate.toFixed(3) + '/' + info.max_rate.toFixed(3);
|
||
|
for (let i = 1; i <= 5; ++i) {
|
||
|
let sprite = panel.getChildByName('grow' + i).getComponent(cc.Sprite);
|
||
|
let url = 'ui_common_loading_bar2';
|
||
|
if (i / 5 >= info.rate / info.max_rate * 0.99)
|
||
|
url = 'ui_common_loading_bar_bg';
|
||
|
sprite.spriteFrame = this.sprite_atlas.getSpriteFrame(url);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/*
|
||
|
* 洗練屬性
|
||
|
*/
|
||
|
washProperty(data) {
|
||
|
for (let node of this.right_panel.children)
|
||
|
node.active = true;
|
||
|
let info = {
|
||
|
cur_aptitude: data.aptitude,
|
||
|
rate: data.rate / 10000,
|
||
|
cur_hp: data.hp,
|
||
|
cur_mp: data.mp,
|
||
|
cur_atk: data.atk,
|
||
|
cur_spd: data.spd,
|
||
|
max_rate: data.maxrate / 10000
|
||
|
};
|
||
|
|
||
|
this.tipWarn = info.cur_aptitude == 3
|
||
|
if (!this.tipWarn) {
|
||
|
if (info.cur_aptitude > this.curLevel)
|
||
|
this.tipHighWarn = true
|
||
|
}
|
||
|
this.showPropertyPanel(info, this.right_panel);
|
||
|
this.can_save_property = true;
|
||
|
let jll_count = GameModel.player.itemList[jll_id] || 0;
|
||
|
this.jll_count_label.string = jll_count + '/' + 3;
|
||
|
},
|
||
|
|
||
|
/*
|
||
|
* 保存洗練屬性
|
||
|
*/
|
||
|
saveProperty(data) {
|
||
|
MsgAlert.addMsg('洗練的屬性保存成功!');
|
||
|
this.can_save_property = false;
|
||
|
this.pet_logic.aptitude = data.aptitude;
|
||
|
console.log(data.aptitude);
|
||
|
console.log(this.pet_logic.aptitude);
|
||
|
this.pet_logic.rate = data.rate / 10000;
|
||
|
this.pet_logic.hp = data.hp;
|
||
|
this.pet_logic.mp = data.mp;
|
||
|
this.pet_logic.atk = data.atk;
|
||
|
this.pet_logic.spd = data.spd;
|
||
|
|
||
|
let info = {
|
||
|
cur_aptitude: data.aptitude, //data.aptitude==undefined
|
||
|
rate: data.rate / 10000,
|
||
|
max_rate: data.maxrate / 10000,
|
||
|
cur_hp: data.hp,
|
||
|
cur_mp: data.mp,
|
||
|
cur_atk: data.atk,
|
||
|
cur_spd: data.spd,
|
||
|
};
|
||
|
this.curLevel = info.cur_aptitude
|
||
|
this.showPropertyPanel(info, this.left_panel);
|
||
|
this.tipWarn = false
|
||
|
this.tipHighWarn = false
|
||
|
},
|
||
|
|
||
|
onButtonClick(event, param) {
|
||
|
if (param == 'close') {
|
||
|
this.unshow();
|
||
|
}
|
||
|
|
||
|
else if (param == 'wash') {
|
||
|
if (this.inCD) {
|
||
|
MsgAlert.addMsg("您點擊太快啦")
|
||
|
return;
|
||
|
}
|
||
|
this.inCD = true
|
||
|
this.scheduleOnce(() => {
|
||
|
this.inCD = false
|
||
|
}, 0.8)
|
||
|
|
||
|
if (this.tipWarn) {
|
||
|
FGAlert.show("預覽中存在萬中無一的資質,確定要重新洗練麼?", () => {
|
||
|
FGAlert.hide()
|
||
|
}, () => {
|
||
|
FGAlert.hide()
|
||
|
this.tipWarn = false
|
||
|
this.tipHighWarn = false
|
||
|
this.onButtonClick(null, "wash")
|
||
|
})
|
||
|
return
|
||
|
}
|
||
|
// if (this.tipHighWarn) {
|
||
|
// FGAlert.show("預覽中有更高評級,確定要重新洗練麼?", () => {
|
||
|
// FGAlert.hide()
|
||
|
// }, () => {
|
||
|
// FGAlert.hide()
|
||
|
// this.tipWarn = false
|
||
|
// this.tipHighWarn = false
|
||
|
// this.onButtonClick(null, "wash")
|
||
|
// })
|
||
|
// return
|
||
|
// }
|
||
|
this.tipWarn = false
|
||
|
this.tipHighWarn = false
|
||
|
let jll_count = GameModel.player.itemList[jll_id] || 0;
|
||
|
if (jll_count < 3) {
|
||
|
MsgAlert.addMsg('金柳露數量不足!');
|
||
|
return;
|
||
|
}
|
||
|
GameModel.send('c2s_wash_petproperty', {
|
||
|
petid: this.pet_logic.petid,
|
||
|
dataid: this.pet_logic.dataid,
|
||
|
washtaype: this.washLevel
|
||
|
});
|
||
|
}
|
||
|
else if (param == 'save') {
|
||
|
if (!this.can_save_property) {
|
||
|
MsgAlert.addMsg('請先洗練屬性,再保存!');
|
||
|
return;
|
||
|
}
|
||
|
GameModel.send('c2s_save_petproperty', {
|
||
|
petid: this.pet_logic.petid,
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
});
|