119 lines
3.5 KiB
TypeScript
119 lines
3.5 KiB
TypeScript
import PlayerMgr from "../object/PlayerMgr";
|
|
import NoticeMgr from "../core/NoticeMgr";
|
|
import WorldReward from "./WorldReward";
|
|
|
|
let hongbao_seed = 1000;
|
|
|
|
export default class WorldRewardMgr {
|
|
|
|
static shared=new WorldRewardMgr();
|
|
rewardList:any;
|
|
|
|
constructor() {
|
|
this.rewardList = {};
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {*} roleId
|
|
* @param {仙玉数量} num
|
|
* @param {红包数量} rewardNum
|
|
*/
|
|
sendReward(roleId:any, num:any, rewardNum:any) {
|
|
return;
|
|
let player:any = PlayerMgr.shared.getPlayerByRoleId(roleId);
|
|
player.send('s2c_notice', {
|
|
strRichText: '世界红包稍后开放',
|
|
});
|
|
// 扣除手续费后的数量
|
|
let numYu = Math.floor(num - (num * 0.10));
|
|
player = PlayerMgr.shared.getPlayerByRoleId(roleId);
|
|
let str = player.CostFee(1, num, '发世界红包', false);
|
|
if (str != '') {
|
|
player.send('s2c_notice', {
|
|
strRichText: str,
|
|
});
|
|
} else { // 成功
|
|
let reward = new WorldReward(hongbao_seed);
|
|
reward.role_name = player.name;
|
|
reward.num = rewardNum;
|
|
reward.jade_count = numYu;
|
|
reward.init();
|
|
|
|
this.rewardList[hongbao_seed] = reward;
|
|
hongbao_seed++;
|
|
//聊天框内 提示一下
|
|
NoticeMgr.shared.sendNotice({
|
|
type: 2,
|
|
text: `${player.name} 发了一个世界红包,大家快来抢红包`,
|
|
});
|
|
}
|
|
}
|
|
/**
|
|
* 请求 红包UI界面
|
|
*/
|
|
getRewardList(player:any) {
|
|
let rewardList:any = {};
|
|
let list = this.rewardList;
|
|
rewardList.list = [];
|
|
for (const rewardid in this.rewardList) {
|
|
if (this.rewardList.hasOwnProperty(rewardid)) {
|
|
const reward = this.rewardList[rewardid];
|
|
let state = 0;
|
|
if(reward.isVaild()){
|
|
if(reward.hasReward(player.roleid)){
|
|
state = 1;
|
|
}
|
|
}else{
|
|
state =2;
|
|
//可进行移除已领取完的红包
|
|
setTimeout(()=>{
|
|
delete this.rewardList[rewardid];
|
|
},7200*1000);
|
|
}
|
|
rewardList.list.push({
|
|
count:reward.jade_count,
|
|
num:reward.num,
|
|
tagid:reward.tagid,
|
|
state:state,
|
|
rolename:reward.role_name,
|
|
})
|
|
}
|
|
}
|
|
player.send('s2c_world_reward_list',rewardList);
|
|
}
|
|
/**
|
|
* 领取红包
|
|
*/
|
|
toReceive(tagID:any, roleId:any) {
|
|
let player = PlayerMgr.shared.getPlayerByRoleId(roleId);
|
|
if(!player){
|
|
return;
|
|
}
|
|
let reward = this.rewardList[tagID];
|
|
if(reward == null){
|
|
return;
|
|
}
|
|
|
|
if(!reward.isVaild()){
|
|
return;
|
|
}
|
|
|
|
if(reward.hasReward(roleId)){
|
|
return;
|
|
}
|
|
|
|
let jade = reward.getReward(roleId);
|
|
player.addMoney(1, jade, '世界红包');
|
|
let noticejade = Math.floor((reward.jade_count / reward.num) * 1.5);
|
|
if(jade >= noticejade){
|
|
NoticeMgr.shared.sendNotice({
|
|
type:2,
|
|
text: `${player.name} 从 ${reward.role_name} 世界红包中获得, ${jade}仙玉`
|
|
});
|
|
}
|
|
|
|
this.getRewardList(player)
|
|
}
|
|
|
|
} |