664 lines
23 KiB
TypeScript
664 lines
23 KiB
TypeScript
|
import GameModel from "../core/GameModel";
|
|||
|
import ItemUtil from "../core/ItemUtil";
|
|||
|
import MsgAlert from "../game/msg/MsgAlert";
|
|||
|
import FGAlert from "../gear_2.3.4/fgui/FGAlert";
|
|||
|
import FGUtil from "../gear_2.3.4/fgui/FGUtil";
|
|||
|
import SKDataUtil from "../gear_2.3.4/util/SKDataUtil";
|
|||
|
import SKUIUtil from "../gear_2.3.4/util/SKUIUtil";
|
|||
|
|
|||
|
const { ccclass, property } = cc._decorator;
|
|||
|
export default class Contact extends cc.Component {
|
|||
|
|
|||
|
/**
|
|||
|
* 社交單例實例
|
|||
|
*/
|
|||
|
public static Instance: Contact = null;
|
|||
|
/**
|
|||
|
* 社交面板
|
|||
|
*/
|
|||
|
contactPanel: fgui.GComponent = null;
|
|||
|
/**
|
|||
|
* 需要加載的預製體
|
|||
|
*/
|
|||
|
prefabObject: any = {};
|
|||
|
/**
|
|||
|
* 幫派郵件數據
|
|||
|
*/
|
|||
|
bangEmailData: any = [];
|
|||
|
/**
|
|||
|
* 普通郵件數據
|
|||
|
*/
|
|||
|
NormalEmailData: any = []
|
|||
|
/**
|
|||
|
* 備份郵件數據(星標和非星標交替備份
|
|||
|
*/
|
|||
|
backupsEmailData: any = []
|
|||
|
/**
|
|||
|
* 當前是否展示的為星標郵件
|
|||
|
*/
|
|||
|
isShowStarEmail: boolean = false;
|
|||
|
/**
|
|||
|
* 選擇的郵件
|
|||
|
*/
|
|||
|
selectEmailIdx: number = 0;
|
|||
|
/**
|
|||
|
* 阻止點擊
|
|||
|
*/
|
|||
|
stopTap: boolean = false;
|
|||
|
|
|||
|
onLoad() {
|
|||
|
if (Contact.Instance === null) {
|
|||
|
Contact.Instance = this;
|
|||
|
this.loadPrefab();
|
|||
|
} else {
|
|||
|
this.destroy();
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 加載預製體
|
|||
|
*/
|
|||
|
loadPrefab() {
|
|||
|
// 加載所需的預製體
|
|||
|
var prefabList = [
|
|||
|
// { url: "Prefabs/UIRole", name: "UIRole" },
|
|||
|
]
|
|||
|
this.prefabObject = {}
|
|||
|
for (let item of prefabList) {
|
|||
|
cc.loader.loadRes(item.url, cc.Prefab, (err, prefab) => {
|
|||
|
if (err)
|
|||
|
console.warn(err);
|
|||
|
else {
|
|||
|
this.prefabObject[item.name] = prefab;
|
|||
|
}
|
|||
|
})
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
openContactPanel(list: any = [], refresh: Boolean = false) {
|
|||
|
if (!this.contactPanel || (this.contactPanel && !this.contactPanel.node && !SKUIUtil.isValid(this.contactPanel.node))) {
|
|||
|
this.contactPanel = FGUtil.create("main_ui", "contact_panel");
|
|||
|
FGUtil.root().addChild(this.contactPanel);
|
|||
|
this.contactPanel.makeFullScreen();
|
|||
|
}
|
|||
|
|
|||
|
var mask = FGUtil.getComponent(this.contactPanel, "mask");
|
|||
|
var close = FGUtil.getButton(this.contactPanel, "alert/close");
|
|||
|
this.pushCloseEvent(mask, this.contactPanel, () => { this.unscheduleAllCallbacks(); });
|
|||
|
this.pushCloseEvent(close, this.contactPanel, () => { this.unscheduleAllCallbacks(); });
|
|||
|
|
|||
|
if (!refresh) {
|
|||
|
GameModel.send("c2s_mail_list", {})
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (list.length > 0) {
|
|||
|
this.NormalEmailData = [];
|
|||
|
this.backupsEmailData = [];
|
|||
|
this.isShowStarEmail = false
|
|||
|
this.NormalEmailData = SKDataUtil.clone(list);
|
|||
|
}
|
|||
|
|
|||
|
// 處理郵件
|
|||
|
this.handleEmailData();
|
|||
|
|
|||
|
FGUtil.getButton(this.contactPanel, "alert/n136").onClick(this.openFriend, this)
|
|||
|
FGUtil.getButton(this.contactPanel, "alert/n137").onClick(this.tipNo, this)
|
|||
|
|
|||
|
// 郵件左側列表
|
|||
|
let emailList = FGUtil.getList(this.contactPanel, "alert/emailList");
|
|||
|
// 設置初始化方法
|
|||
|
emailList.itemRenderer = this.initEmailItem.bind(this);
|
|||
|
// 虛擬列表
|
|||
|
emailList.setVirtual();
|
|||
|
emailList.numItems = this.NormalEmailData.length;
|
|||
|
|
|||
|
// 幫派郵件內容列表
|
|||
|
let bangContentList = FGUtil.getList(this.contactPanel, "alert/bang_content");
|
|||
|
// 設置初始化方法
|
|||
|
bangContentList.itemRenderer = this.initBangEmailContent.bind(this);
|
|||
|
// 虛擬列表
|
|||
|
bangContentList.setVirtual();
|
|||
|
|
|||
|
// 一鍵領取
|
|||
|
let oneKeyReceiveBtn = FGUtil.getButton(this.contactPanel, "alert/allReward");
|
|||
|
oneKeyReceiveBtn.clearClick();
|
|||
|
oneKeyReceiveBtn.onClick(this.oneKeyReceiveAllReward, this);
|
|||
|
// 一鍵刪除
|
|||
|
let oneKeyDeleteeBtn = FGUtil.getButton(this.contactPanel, "alert/oneKeyDel");
|
|||
|
oneKeyDeleteeBtn.clearClick();
|
|||
|
oneKeyDeleteeBtn.onClick(this.oneKeyDeleteAllEmail, this);
|
|||
|
|
|||
|
// 顯示星標郵件
|
|||
|
FGUtil.getComponent(this.contactPanel, "alert/n75").clearClick();
|
|||
|
FGUtil.getComponent(this.contactPanel, "alert/n75").onClick(() => {
|
|||
|
if (this.backupsEmailData.length == 0)
|
|||
|
MsgAlert.addMsg("大俠,星標郵件數量為0~")
|
|||
|
else
|
|||
|
this.exchangeEmailData()
|
|||
|
})
|
|||
|
// 顯示非星標郵件
|
|||
|
FGUtil.getComponent(this.contactPanel, "alert/back").clearClick();
|
|||
|
FGUtil.getComponent(this.contactPanel, "alert/back").onClick(() => {
|
|||
|
this.exchangeEmailData()
|
|||
|
})
|
|||
|
if (this.NormalEmailData.length == 0) {
|
|||
|
// 沒有郵件
|
|||
|
FGUtil.getControl(this.contactPanel, "alert/noEmail").selectedIndex = 1;
|
|||
|
} else {
|
|||
|
// 有郵件
|
|||
|
FGUtil.getControl(this.contactPanel, "alert/noEmail").selectedIndex = 0;
|
|||
|
this.onEmailClick(null, 0);
|
|||
|
}
|
|||
|
|
|||
|
// 調試功能
|
|||
|
// var bangEmailBtn = FGUtil.getComponent(this.contactPanel, "alert/n95");
|
|||
|
// bangEmailBtn.onClick(this.createBangEmail, this)
|
|||
|
// var norEmailBtn = FGUtil.getComponent(this.contactPanel, "alert/n96");
|
|||
|
// norEmailBtn.onClick(this.createNormalEmail, this)
|
|||
|
// var rewardEmailBtn = FGUtil.getComponent(this.contactPanel, "alert/n121");
|
|||
|
// rewardEmailBtn.onClick(this.createRewardEmail, this)
|
|||
|
// var delAllEmailBtn = FGUtil.getComponent(this.contactPanel, "alert/n122");
|
|||
|
// delAllEmailBtn.onClick(() => {
|
|||
|
// this.bangEmailData = [];
|
|||
|
// this.NormalEmailData = [];
|
|||
|
// emailList.numItems = 0;
|
|||
|
// bangContentList.numItems = 0;
|
|||
|
// }, this)
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
checkHasNoRead(list) {
|
|||
|
if (list.length <= 0) return
|
|||
|
|
|||
|
this.NormalEmailData = [];
|
|||
|
this.backupsEmailData = [];
|
|||
|
this.isShowStarEmail = false
|
|||
|
this.NormalEmailData = SKDataUtil.clone(list);
|
|||
|
|
|||
|
// 處理郵件
|
|||
|
this.handleEmailData();
|
|||
|
|
|||
|
var needTip = false
|
|||
|
for (let i = this.NormalEmailData.length - 1; i >= 0; i--) {
|
|||
|
if (this.NormalEmailData[i].type && this.NormalEmailData[i].type != "email2") {
|
|||
|
needTip = true
|
|||
|
}
|
|||
|
}
|
|||
|
if (needTip) {
|
|||
|
var fp = cc.find("Canvas/MainUI/FriendPanel")
|
|||
|
if (fp) {
|
|||
|
let lg = fp.getComponent("FriendPanel")
|
|||
|
if (lg)
|
|||
|
lg.showEmailTip()
|
|||
|
} else {
|
|||
|
if (!SKUIUtil.isFGUIValid(this.contactPanel)) {
|
|||
|
var mainui = cc.find("Canvas/MainUI")
|
|||
|
if (mainui) {
|
|||
|
let mlg = mainui.getComponent("MainUI")
|
|||
|
if (mlg)
|
|||
|
mlg.friendAddTip()
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 處理星標和非星標數據,默認是非星標
|
|||
|
*/
|
|||
|
handleEmailData() {
|
|||
|
for (let i = this.NormalEmailData.length - 1; i >= 0; i--) {
|
|||
|
this.NormalEmailData[i].isStar = false;
|
|||
|
if (!this.NormalEmailData[i].type) {
|
|||
|
this.NormalEmailData[i].type = "email0"
|
|||
|
}
|
|||
|
if (this.NormalEmailData[i].gets && this.NormalEmailData[i].gets.length > 0) {
|
|||
|
|
|||
|
this.NormalEmailData[i].isReward = true
|
|||
|
this.NormalEmailData[i].countDown = 99
|
|||
|
this.NormalEmailData[i].receive = this.NormalEmailData[i].state == 2 ? true : false
|
|||
|
if (this.NormalEmailData[i].receive) {
|
|||
|
this.NormalEmailData[i].type = "email2"
|
|||
|
} else {
|
|||
|
this.NormalEmailData[i].type = "email1"
|
|||
|
}
|
|||
|
}
|
|||
|
if (this.NormalEmailData[i].isStar) {
|
|||
|
this.backupsEmailData.push(this.NormalEmailData.splice(i, 1))
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 交換星標或非星標數據為當前顯示數據
|
|||
|
*/
|
|||
|
exchangeEmailData() {
|
|||
|
var temp = SKDataUtil.clone(this.NormalEmailData);
|
|||
|
this.NormalEmailData = SKDataUtil.clone(this.backupsEmailData);
|
|||
|
this.backupsEmailData = temp;
|
|||
|
this.isShowStarEmail = !this.isShowStarEmail;
|
|||
|
FGUtil.getControl(this.contactPanel, "alert/isStar").selectedIndex = this.isShowStarEmail ? 1 : 0;
|
|||
|
this.changeEmailListNum();
|
|||
|
console.log("當前數據")
|
|||
|
console.log(this.NormalEmailData)
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 初始化郵件項目
|
|||
|
* @param idx 下標
|
|||
|
* @param obj fgui=》Obj
|
|||
|
*/
|
|||
|
initEmailItem(idx, obj: fairygui.GObject) {
|
|||
|
let item = obj.asCom;
|
|||
|
if (this.NormalEmailData[idx].type == "bang") {
|
|||
|
// 幫派郵件
|
|||
|
item.icon = `ui://main_ui/9043`
|
|||
|
FGUtil.getControl(item, "isBang").selectedIndex = 1;
|
|||
|
} else {
|
|||
|
// 普通郵件
|
|||
|
item.icon = `ui://main_ui/icon_${this.NormalEmailData[idx].type}`
|
|||
|
FGUtil.getControl(item, "isBang").selectedIndex = 0;
|
|||
|
// 已讀
|
|||
|
if (this.NormalEmailData[idx].type == "email2")
|
|||
|
FGUtil.getControl(item, "isRead").selectedIndex = 1;
|
|||
|
}
|
|||
|
|
|||
|
// 發件人和日期
|
|||
|
FGUtil.getTextField(item, "title").text = this.NormalEmailData[idx].title;
|
|||
|
FGUtil.getTextField(item, "time").text = this.NormalEmailData[idx].date;
|
|||
|
|
|||
|
if (this.selectEmailIdx == idx) {
|
|||
|
// 選中狀態
|
|||
|
FGUtil.getControl(item, "selected").selectedIndex = 1;
|
|||
|
item.asButton.touchable = false;
|
|||
|
} else {
|
|||
|
// 非選中狀態
|
|||
|
FGUtil.getControl(item, "selected").selectedIndex = 0;
|
|||
|
item.node["idx"] = idx
|
|||
|
item.asButton.onClick(this.onEmailClick, this)
|
|||
|
item.asButton.touchable = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 郵件點擊事件
|
|||
|
*/
|
|||
|
onEmailClick(e: Event, id: number = 0) {
|
|||
|
// 改變選中的idx
|
|||
|
var idx;
|
|||
|
if (e && e.target && e.target["idx"])
|
|||
|
idx = e.target["idx"];
|
|||
|
else
|
|||
|
idx = id;
|
|||
|
this.selectEmailIdx = idx;
|
|||
|
|
|||
|
var contentData = this.NormalEmailData[idx];
|
|||
|
if (contentData.type != "bang") {
|
|||
|
// 無禮物郵件改為已讀圖標
|
|||
|
if (this.NormalEmailData[idx].type == "email0") {
|
|||
|
GameModel.send("c2s_mail_action", {
|
|||
|
action: 4,
|
|||
|
mailId: contentData.mailId
|
|||
|
})
|
|||
|
this.NormalEmailData[idx].type = "email2";
|
|||
|
}
|
|||
|
// 展示普通郵件內容
|
|||
|
FGUtil.getControl(this.contactPanel, "alert/isBang").selectedIndex = 0;
|
|||
|
this.showNormalEmailContent(contentData, idx);
|
|||
|
} else {
|
|||
|
// 顯示幫派郵件內容
|
|||
|
FGUtil.getControl(this.contactPanel, "alert/isBang").selectedIndex = 1;
|
|||
|
let bangContentList = FGUtil.getList(this.contactPanel, "alert/bang_content");
|
|||
|
bangContentList.numItems = this.bangEmailData.length
|
|||
|
}
|
|||
|
|
|||
|
// 刷新列表
|
|||
|
this.refreshEmailList();
|
|||
|
}
|
|||
|
// 刷新郵件列表
|
|||
|
refreshEmailList() {
|
|||
|
let emailList = FGUtil.getList(this.contactPanel, "alert/emailList");
|
|||
|
emailList.refreshVirtualList();
|
|||
|
}
|
|||
|
|
|||
|
// 改變郵件列表數量(並刷新)
|
|||
|
changeEmailListNum() {
|
|||
|
if (this.NormalEmailData.length == 0) {
|
|||
|
// 沒有郵件
|
|||
|
FGUtil.getControl(this.contactPanel, "alert/noEmail").selectedIndex = 1;
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// 有郵件
|
|||
|
FGUtil.getControl(this.contactPanel, "alert/noEmail").selectedIndex = 0;
|
|||
|
let emailList = FGUtil.getList(this.contactPanel, "alert/emailList");
|
|||
|
emailList.numItems = this.NormalEmailData.length;
|
|||
|
if (this.selectEmailIdx >= this.NormalEmailData.length) this.selectEmailIdx = this.NormalEmailData.length - 1;
|
|||
|
if (this.selectEmailIdx != -1)
|
|||
|
this.onEmailClick(null, this.selectEmailIdx);
|
|||
|
}
|
|||
|
/**
|
|||
|
* 初始化幫派郵件內容
|
|||
|
*/
|
|||
|
initBangEmailContent(idx, obj: fairygui.GObject) {
|
|||
|
let item = obj.asCom;
|
|||
|
FGUtil.getRichTextField(item, "content").text = this.bangEmailData[idx].content;
|
|||
|
FGUtil.getTextField(item, "fromTime").text = this.bangEmailData[idx].date;
|
|||
|
FGUtil.getTextField(item, "fromPerson").text = this.bangEmailData[idx].signer;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 展示普通郵件內容
|
|||
|
* @param contentData 郵件內容
|
|||
|
*/
|
|||
|
showNormalEmailContent(contentData: any, idx) {
|
|||
|
// 顯示郵件內容
|
|||
|
var contentPanle = FGUtil.getComponent(this.contactPanel, "alert/normal_content");
|
|||
|
// 是否星標
|
|||
|
FGUtil.getControl(contentPanle, "isStar").selectedIndex = contentData.isStar ? 1 : 0;
|
|||
|
// 郵件類型
|
|||
|
FGUtil.getTextField(contentPanle, "fromType").text = contentData.title;
|
|||
|
FGUtil.getList(contentPanle, "content").removeChildrenToPool();
|
|||
|
var con = FGUtil.getList(contentPanle, "content").addItemFromPool().asCom;
|
|||
|
// 內容
|
|||
|
FGUtil.getRichTextField(con, "content").text = contentData.content;
|
|||
|
// 日期
|
|||
|
FGUtil.getTextField(con, "fromTime").text = contentData.date;
|
|||
|
// 落款人
|
|||
|
FGUtil.getTextField(con, "fromPerson").text = contentData.title;
|
|||
|
|
|||
|
if (contentData.gets && contentData.gets.length > 0) {
|
|||
|
// 是獎勵型郵件
|
|||
|
FGUtil.getControl(contentPanle, "showReward").selectedIndex = 1;
|
|||
|
// 過期時間
|
|||
|
FGUtil.getControl(contentPanle, "showTime").selectedIndex = 1;
|
|||
|
FGUtil.getTextField(contentPanle, "time").text = contentData.countDown + "天后過期";
|
|||
|
// 是否領取
|
|||
|
FGUtil.getControl(contentPanle, "isReceived").selectedIndex = contentData.receive ? 1 : 0;
|
|||
|
// 獎勵內容
|
|||
|
let rewardBox = FGUtil.getList(contentPanle, "rewardList");
|
|||
|
rewardBox.removeChildren();
|
|||
|
for (let i in contentData.gets) {
|
|||
|
var itemData = ItemUtil.getItemData(contentData.gets[i].itemId)
|
|||
|
if (contentData.gets[i].type == "score") {
|
|||
|
var item = rewardBox.addItem("ui://main_ui/email_reward_score").asCom;
|
|||
|
FGUtil.getLoader(item, "icon").texture = ItemUtil.getItemIcon(itemData.icon);
|
|||
|
FGUtil.getTextField(item, "num").text = SKDataUtil.transform(contentData.gets[i].itemCount);
|
|||
|
} else {
|
|||
|
var item = rewardBox.addItem("ui://main_ui/email_reward_item").asCom;
|
|||
|
FGUtil.getLoader(item, "icon").texture = ItemUtil.getItemIcon(itemData.icon);
|
|||
|
FGUtil.getTextField(item, "title").text = SKDataUtil.transform(contentData.gets[i].itemCount);
|
|||
|
}
|
|||
|
}
|
|||
|
rewardBox.ensureBoundsCorrect();
|
|||
|
// 領取郵件中的獎勵
|
|||
|
let receiveBtn = FGUtil.getButton(contentPanle, "reward");
|
|||
|
receiveBtn.clearClick();
|
|||
|
receiveBtn.onClick(() => {
|
|||
|
if (this.stopTap) {
|
|||
|
MsgAlert.addMsg("您操作過於頻繁");
|
|||
|
return
|
|||
|
}
|
|||
|
this.stopTap = true
|
|||
|
GameModel.send("c2s_mail_action", {
|
|||
|
action: 0,
|
|||
|
mailId: contentData.mailId
|
|||
|
})
|
|||
|
// this.NormalEmailData[idx].receive = true
|
|||
|
// FGUtil.getControl(contentPanle, "isReceived").selectedIndex = 1;
|
|||
|
this.scheduleOnce(() => {
|
|||
|
this.stopTap = false
|
|||
|
}, 0.5)
|
|||
|
}, this)
|
|||
|
} else {
|
|||
|
// 普通郵件,没有积分或物品
|
|||
|
FGUtil.getControl(contentPanle, "showReward").selectedIndex = 0;
|
|||
|
FGUtil.getControl(contentPanle, "showTime").selectedIndex = 0;
|
|||
|
FGUtil.getControl(contentPanle, "isReceived").selectedIndex = 0;
|
|||
|
}
|
|||
|
// 刪除郵件
|
|||
|
let delBtn = FGUtil.getButton(contentPanle, "delete");
|
|||
|
delBtn.clearClick();
|
|||
|
delBtn.onClick(() => {
|
|||
|
// 星標郵件刪除需要提示
|
|||
|
if (contentData.isStar) {
|
|||
|
FGAlert.show("是否刪除星標郵件,刪除後將不可恢復?", () => {
|
|||
|
FGAlert.hide();
|
|||
|
}, () => {
|
|||
|
if (this.stopTap) {
|
|||
|
MsgAlert.addMsg("您操作過於頻繁");
|
|||
|
return
|
|||
|
}
|
|||
|
this.stopTap = true
|
|||
|
FGAlert.hide();
|
|||
|
GameModel.send("c2s_mail_action", {
|
|||
|
action: 1,
|
|||
|
mailId: contentData.mailId
|
|||
|
})
|
|||
|
this.NormalEmailData.splice(idx, 1)
|
|||
|
// 星標數量為0,則切換為非星標郵件顯示
|
|||
|
if (this.NormalEmailData.length == 0 && this.isShowStarEmail)
|
|||
|
this.exchangeEmailData();
|
|||
|
else
|
|||
|
this.changeEmailListNum();
|
|||
|
this.scheduleOnce(() => {
|
|||
|
this.stopTap = false
|
|||
|
}, 0.5)
|
|||
|
})
|
|||
|
return;
|
|||
|
}
|
|||
|
if (this.stopTap) {
|
|||
|
MsgAlert.addMsg("您操作過於頻繁");
|
|||
|
return
|
|||
|
}
|
|||
|
this.stopTap = true
|
|||
|
GameModel.send("c2s_mail_action", {
|
|||
|
action: 1,
|
|||
|
mailId: contentData.mailId
|
|||
|
})
|
|||
|
this.NormalEmailData.splice(idx, 1)
|
|||
|
this.changeEmailListNum();
|
|||
|
this.scheduleOnce(() => {
|
|||
|
this.stopTap = false
|
|||
|
}, 0.5)
|
|||
|
}, this)
|
|||
|
FGUtil.getComponent(contentPanle, "n4").asButton.clearClick();
|
|||
|
FGUtil.getComponent(contentPanle, "n5").asButton.clearClick();
|
|||
|
FGUtil.getComponent(contentPanle, "n4").asButton.onClick(this.convertStarEmail, this)
|
|||
|
FGUtil.getComponent(contentPanle, "n5").asButton.onClick(this.converNoStarEmail, this)
|
|||
|
}
|
|||
|
|
|||
|
convertStarEmail() {
|
|||
|
// console.log(SKDataUtil.clone(this.NormalEmailData))
|
|||
|
this.NormalEmailData[this.selectEmailIdx].isStar = true;
|
|||
|
this.backupsEmailData.push(this.NormalEmailData.splice(this.selectEmailIdx, 1)[0])
|
|||
|
this.changeEmailListNum();
|
|||
|
MsgAlert.addMsg("標記成功,此郵件已移入星標郵件中");
|
|||
|
}
|
|||
|
|
|||
|
converNoStarEmail() {
|
|||
|
this.NormalEmailData[this.selectEmailIdx].isStar = false;
|
|||
|
this.backupsEmailData.push(this.NormalEmailData.splice(this.selectEmailIdx, 1)[0])
|
|||
|
// 星標數量為0,則切換為非星標郵件顯示
|
|||
|
if (this.NormalEmailData.length == 0 && this.isShowStarEmail)
|
|||
|
this.exchangeEmailData();
|
|||
|
else
|
|||
|
this.changeEmailListNum();
|
|||
|
MsgAlert.addMsg("取消成功,此郵件已移出星標郵件");
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 一鍵領取所有獎勵
|
|||
|
*/
|
|||
|
oneKeyReceiveAllReward() {
|
|||
|
if (this.stopTap) {
|
|||
|
MsgAlert.addMsg("您操作過於頻繁");
|
|||
|
return
|
|||
|
}
|
|||
|
this.stopTap = true
|
|||
|
var count = 0;
|
|||
|
for (let i in this.NormalEmailData) {
|
|||
|
if (this.NormalEmailData[i].isReward) {
|
|||
|
// this.NormalEmailData[i].type = "email2"
|
|||
|
// this.NormalEmailData[i].receive = true
|
|||
|
count++;
|
|||
|
}
|
|||
|
}
|
|||
|
if (count > 0) {
|
|||
|
// this.refreshEmailList();
|
|||
|
// this.onEmailClick(null, this.selectEmailIdx)
|
|||
|
GameModel.send("c2s_mail_action", {
|
|||
|
action: 2
|
|||
|
})
|
|||
|
}
|
|||
|
else
|
|||
|
MsgAlert.addMsg("大俠,當前暫無可領取的獎勵")
|
|||
|
this.scheduleOnce(() => {
|
|||
|
this.stopTap = false
|
|||
|
}, 0.5)
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 一鍵刪除所有郵件
|
|||
|
*/
|
|||
|
oneKeyDeleteAllEmail() {
|
|||
|
var count = 0;
|
|||
|
for (let i = this.NormalEmailData.length - 1; i >= 0; i--) {
|
|||
|
if (this.NormalEmailData[i].type != "bang" && (!this.NormalEmailData[i].isReward || (this.NormalEmailData[i].isReward && this.NormalEmailData[i].receive))) {
|
|||
|
count++;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (count == 0) {
|
|||
|
MsgAlert.addMsg("大俠,當前暫無可刪除的郵件")
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
FGAlert.show("確定將已領獎的非星標郵件一鍵刪除?", () => {
|
|||
|
FGAlert.hide();
|
|||
|
}, () => {
|
|||
|
if (this.stopTap) {
|
|||
|
MsgAlert.addMsg("您操作過於頻繁");
|
|||
|
return
|
|||
|
}
|
|||
|
this.stopTap = true
|
|||
|
FGAlert.hide();
|
|||
|
for (let i = this.NormalEmailData.length - 1; i >= 0; i--) {
|
|||
|
if (this.NormalEmailData[i].type != "bang" && (!this.NormalEmailData[i].isReward || (this.NormalEmailData[i].isReward && this.NormalEmailData[i].receive))) {
|
|||
|
this.NormalEmailData.splice(i, 1)
|
|||
|
continue;
|
|||
|
}
|
|||
|
}
|
|||
|
GameModel.send("c2s_mail_action", {
|
|||
|
action: 3
|
|||
|
})
|
|||
|
this.changeEmailListNum();
|
|||
|
this.scheduleOnce(() => {
|
|||
|
this.stopTap = false
|
|||
|
}, 0.3)
|
|||
|
})
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 添加關閉事件
|
|||
|
*/
|
|||
|
pushCloseEvent(item: fairygui.GComponent, target: fairygui.GComponent, call: Function = null) {
|
|||
|
item.clearClick();
|
|||
|
item.onClick(() => {
|
|||
|
call && call()
|
|||
|
FGUtil.dispose(target);
|
|||
|
}, this)
|
|||
|
}
|
|||
|
|
|||
|
tipNo() {
|
|||
|
MsgAlert.addMsg("暫未開放")
|
|||
|
}
|
|||
|
|
|||
|
openFriend() {
|
|||
|
var mainui = cc.find("Canvas/MainUI")
|
|||
|
if (mainui) {
|
|||
|
let mlg = mainui.getComponent("MainUI")
|
|||
|
if (mlg)
|
|||
|
mlg.onFriendBtnClicked()
|
|||
|
}
|
|||
|
FGUtil.dispose(this.contactPanel)
|
|||
|
this.contactPanel = null
|
|||
|
}
|
|||
|
/**
|
|||
|
* 造假郵件
|
|||
|
*/
|
|||
|
createBangEmail() {
|
|||
|
return
|
|||
|
var idxArr = Object.keys(GameModel.conf_npc)
|
|||
|
var rand, num = Math.floor(Math.random() * 5 + 1);
|
|||
|
var str = "";
|
|||
|
for (let i = 0; i < num; i++) {
|
|||
|
rand = Math.floor(Math.random() * idxArr.length)
|
|||
|
str += GameModel.conf_npc[idxArr[rand]].talk
|
|||
|
}
|
|||
|
let item = {
|
|||
|
from: "幫派郵件",
|
|||
|
signer: "系統管理員",
|
|||
|
content: str,
|
|||
|
date: "2021-4-29"
|
|||
|
}
|
|||
|
this.bangEmailData.push(item)
|
|||
|
if (this.NormalEmailData && this.NormalEmailData.length > 0) {
|
|||
|
if (this.NormalEmailData[0].type != "bang")
|
|||
|
this.NormalEmailData.unshift({ type: "bang", from: "幫派郵件", date: "2021-4-29" })
|
|||
|
} else {
|
|||
|
this.NormalEmailData = []
|
|||
|
this.NormalEmailData.push({ type: "bang", from: "幫派郵件", date: "2021-4-29" })
|
|||
|
}
|
|||
|
this.changeEmailListNum();
|
|||
|
}
|
|||
|
createNormalEmail() {
|
|||
|
return
|
|||
|
var idxArr = Object.keys(GameModel.conf_npc)
|
|||
|
var rand = Math.floor(Math.random() * idxArr.length)
|
|||
|
let item = {
|
|||
|
type: "email0",
|
|||
|
isStar: false,
|
|||
|
from: GameModel.conf_npc[idxArr[rand]].name,
|
|||
|
signer: GameModel.conf_npc[idxArr[rand]].name,
|
|||
|
content: GameModel.conf_npc[idxArr[rand]].talk,
|
|||
|
date: "2021-4-29"
|
|||
|
}
|
|||
|
this.NormalEmailData.push(item)
|
|||
|
this.changeEmailListNum();
|
|||
|
}
|
|||
|
createRewardEmail() {
|
|||
|
return
|
|||
|
var idxArr = Object.keys(GameModel.conf_npc)
|
|||
|
var rand = Math.floor(Math.random() * idxArr.length)
|
|||
|
var rand2 = Math.floor(Math.random() * 7) + 1
|
|||
|
var rand3 = rand2 % 3 + 1;
|
|||
|
var list = []
|
|||
|
for (let i = 0; i < rand2; i++) {
|
|||
|
if (i % rand3 == 1)
|
|||
|
list.push({ id: 90002, num: 999999, type: "score" })
|
|||
|
else
|
|||
|
list.push({ id: 90002, num: 999999, type: "item" })
|
|||
|
}
|
|||
|
let item = {
|
|||
|
type: "email1",
|
|||
|
isStar: false,
|
|||
|
isReward: true,
|
|||
|
rewardList: list,
|
|||
|
from: GameModel.conf_npc[idxArr[rand]].name,
|
|||
|
signer: GameModel.conf_npc[idxArr[rand]].name,
|
|||
|
content: GameModel.conf_npc[idxArr[rand]].talk,
|
|||
|
date: "2021-4-29",
|
|||
|
countDown: 99,
|
|||
|
receive: false
|
|||
|
}
|
|||
|
this.NormalEmailData.push(item)
|
|||
|
this.changeEmailListNum();
|
|||
|
}
|
|||
|
|
|||
|
}
|