832 lines
25 KiB
TypeScript
832 lines
25 KiB
TypeScript
import SKUIUtil from "./gear_2.3.4/util/SKUIUtil";
|
||
import GameModel from "./core/GameModel";
|
||
import FGUtil from "./gear_2.3.4/fgui/FGUtil";
|
||
import MsgAlert from "./game/msg/MsgAlert";
|
||
import SKDataUtil from "./gear_2.3.4/util/SKDataUtil";
|
||
import DailyActivityData, { ActivityObj, DailyClassType } from "./DailyActivityData";
|
||
import GameUtil from "./core/GameUtil";
|
||
import g_NpcMgr = require('../game/NpcMgr')
|
||
import ItemUtil from "./core/ItemUtil";
|
||
const { ccclass, property } = cc._decorator;
|
||
export default class DailyActivity extends cc.Component {
|
||
/**
|
||
* 日常活動單例實例
|
||
*/
|
||
public static Instance : DailyActivity = null;
|
||
|
||
/**
|
||
* 日常活動面板
|
||
*/
|
||
DailyActivityPanel : fgui.GComponent = null;
|
||
/**
|
||
* 日常活動詳情面板
|
||
*/
|
||
DailyInfoPanel : fgui.GComponent = null;
|
||
|
||
activityList : any = [];
|
||
|
||
onLoad() {
|
||
if (DailyActivity.Instance === null) {
|
||
DailyActivity.Instance = this;
|
||
this.activityList = DailyActivityData.activityList;
|
||
} else {
|
||
this.destroy();
|
||
return;
|
||
}
|
||
}
|
||
|
||
openDailyActivityPanel() {
|
||
if (!SKUIUtil.isFGUIValid(this.DailyActivityPanel)) {
|
||
this.DailyActivityPanel = FGUtil.create("main_ui", "activity_panel");
|
||
FGUtil.root().addChild(this.DailyActivityPanel);
|
||
this.DailyActivityPanel.makeFullScreen();
|
||
}
|
||
|
||
FGUtil.getComponent(this.DailyActivityPanel, "mask").onClick(this.closePanel, this)
|
||
FGUtil.getButton(this.DailyActivityPanel, "alert/close").onClick(this.closePanel, this)
|
||
|
||
var alert = FGUtil.getComponent(this.DailyActivityPanel, "alert");
|
||
// FGUtil.getButton(alert, "activityReward1").onClick(this.clickReward1, this);
|
||
// FGUtil.getButton(alert, "activityReward2").onClick(this.clickReward2, this);
|
||
// FGUtil.getButton(alert, "activityReward3").onClick(this.clickReward3, this);
|
||
// FGUtil.getButton(alert, "activityReward4").onClick(this.clickReward4, this);
|
||
// FGUtil.getButton(alert, "activityReward5").onClick(this.clickReward5, this);
|
||
// FGUtil.getButton(alert, "activityReward6").onClick(this.clickReward6, this);
|
||
FGUtil.getComponent(alert, "activityReward1/icon").onClick(this.clickReward1, this);
|
||
FGUtil.getComponent(alert, "activityReward2/icon").onClick(this.clickReward2, this);
|
||
FGUtil.getComponent(alert, "activityReward3/icon").onClick(this.clickReward3, this);
|
||
FGUtil.getComponent(alert, "activityReward4/icon").onClick(this.clickReward4, this);
|
||
FGUtil.getComponent(alert, "activityReward5/icon").onClick(this.clickReward5, this);
|
||
FGUtil.getComponent(alert, "activityReward6/icon").onClick(this.clickReward6, this);
|
||
|
||
FGUtil.getButton(alert, "setTuiSong").onClick(this.clickTuiSong, this);
|
||
FGUtil.getButton(alert, "hotDot").onClick(this.clickHotDot, this);
|
||
FGUtil.getButton(alert, "doubleExp").onClick(this.clickDoubleExp, this);
|
||
FGUtil.getButton(alert, "allType").onClick(this.clickAllType, this);
|
||
FGUtil.getButton(alert, "expType").onClick(this.clickExpType, this);
|
||
FGUtil.getButton(alert, "goldType").onClick(this.clickGoldType, this);
|
||
FGUtil.getButton(alert, "relaxType").onClick(this.clickRelaxType, this);
|
||
|
||
var list = FGUtil.getList(alert, "list");
|
||
list.itemRenderer = this.initActivityItem.bind(this);
|
||
list.itemProvider = this.getListItemResource.bind(this);
|
||
list.setVirtual();
|
||
|
||
|
||
this.refreshActivityListByType();
|
||
this.refreshActivityCount();
|
||
this.refreshActivityPrize();
|
||
this.refreshDouble();
|
||
|
||
|
||
GameModel.send('c2s_ask_daily_info', {});
|
||
}
|
||
|
||
|
||
getListItemResource(idx : number) {
|
||
// 字節點
|
||
if (this.activityList[idx].isChild)
|
||
return "ui://main_ui/activityPopList";
|
||
// 佔位節點
|
||
else if (this.activityList[idx].isEmpty > 0)
|
||
return "ui://main_ui/emptySize";
|
||
// 普通
|
||
else
|
||
return "ui://main_ui/activity_item";
|
||
}
|
||
|
||
initActivityItem(idx, obj : fairygui.GObject) {
|
||
let item = obj.asCom;
|
||
var info : ActivityObj = this.activityList[idx];
|
||
if (info.isChild) {
|
||
if (info.childList.length <= 2) {
|
||
FGUtil.getControl(item, "line").selectedIndex = 0
|
||
}
|
||
else if (info.childList.length <= 4) {
|
||
FGUtil.getControl(item, "line").selectedIndex = 1
|
||
}
|
||
else {
|
||
FGUtil.getControl(item, "line").selectedIndex = 2
|
||
}
|
||
var childList = FGUtil.getList(item, 'list')
|
||
childList.removeChildren();
|
||
for (let i = 0; i < info.childList.length; i++) {
|
||
let itemChild = childList.addItem().asCom;
|
||
this.initActivityChildItem(itemChild, info.childList[i]);
|
||
}
|
||
return;
|
||
}
|
||
if (info.isEmpty > 0) {
|
||
if (info.isEmpty == 1)
|
||
item.height = 88
|
||
if (info.isEmpty == 2)
|
||
item.height = 165
|
||
if (info.isEmpty == 3)
|
||
item.height = 250
|
||
return;
|
||
}
|
||
|
||
var inTime = this.checkInTime(info.startTime, info.endTime);
|
||
|
||
if (info.childList.length > 0) {// 有子按鈕
|
||
if (info.expanded) // 展開子按鈕
|
||
FGUtil.getControl(item, "down").selectedIndex = 2;
|
||
else
|
||
FGUtil.getControl(item, "down").selectedIndex = 1;
|
||
} else //無子按鈕
|
||
FGUtil.getControl(item, "down").selectedIndex = 0;
|
||
|
||
|
||
if (info.finish) //已完成
|
||
FGUtil.getControl(item, "finish").selectedIndex = 1;
|
||
else { // 未完成狀態
|
||
if (inTime == -1)//已結束
|
||
FGUtil.getControl(item, "finish").selectedIndex = 2;
|
||
else
|
||
FGUtil.getControl(item, "finish").selectedIndex = 0;
|
||
}
|
||
|
||
|
||
if (info.hasSet) //有設置屬性
|
||
FGUtil.getControl(item, "set").selectedIndex = 1;
|
||
else //無設置屬性
|
||
FGUtil.getControl(item, "set").selectedIndex = 0;
|
||
|
||
if (info.hasGo) {
|
||
// 如果完成就不再顯示前往
|
||
if (info.finish)
|
||
FGUtil.getControl(item, "goTo").selectedIndex = 0;
|
||
// 如果有時間限制
|
||
else if (info.fixedTime != "" && SKDataUtil.hasProperty(info.startTime, "d") && info.startTime.d != -1) {
|
||
if (inTime == 1) {
|
||
// 處於限制時間內,顯示前往
|
||
FGUtil.getControl(item, "goTo").selectedIndex = 1;
|
||
FGUtil.getControl(item, "showTime").selectedIndex = 0;
|
||
} else if (inTime == 0) {
|
||
// 未開始,顯示時間
|
||
FGUtil.getControl(item, "goTo").selectedIndex = 0;
|
||
FGUtil.getControl(item, "showTime").selectedIndex = 1;
|
||
} else if (inTime == -1) {
|
||
// 已結束
|
||
FGUtil.getControl(item, "goTo").selectedIndex = 0;
|
||
FGUtil.getControl(item, "showTime").selectedIndex = 0;
|
||
}
|
||
}
|
||
else //顯示前往
|
||
FGUtil.getControl(item, "goTo").selectedIndex = 1;
|
||
} else {
|
||
FGUtil.getControl(item, "goTo").selectedIndex = 0;
|
||
|
||
if (inTime == 0 && info.fixedTime != "")
|
||
FGUtil.getControl(item, "showTime").selectedIndex = 1;
|
||
}
|
||
|
||
// 顯示遮罩
|
||
if (DailyActivityData.showChild && !info.expanded)
|
||
FGUtil.getControl(item, "mask").selectedIndex = 1;
|
||
else
|
||
FGUtil.getControl(item, "mask").selectedIndex = 0;
|
||
|
||
// 顯示任務名稱
|
||
FGUtil.getTextField(item, "name").text = info.name;
|
||
|
||
// 顯示任務圖標
|
||
FGUtil.getLoader(item, "icon").url = `ui://main_ui/${info.icon}`;
|
||
|
||
// 顯示高獎勵類型
|
||
FGUtil.getLoader(item, "typeIcon").url = `ui://main_ui/${info.tipType}`;
|
||
|
||
|
||
// 顯示次數描述
|
||
if (info.des) {
|
||
FGUtil.getTextField(item, "times").text = `${info.des}:${info.desValue}/${info.desMax}${info.desSuffix}`;
|
||
} else
|
||
FGUtil.getTextField(item, "times").text = "";
|
||
|
||
// 顯示活躍度
|
||
if (info.activityDes) {
|
||
FGUtil.getTextField(item, "activity").text = `${info.activityDes}:${info.activityValue}/${info.activityMax}`;
|
||
} else
|
||
FGUtil.getTextField(item, "activity").text = "";
|
||
|
||
// if (info.des) {
|
||
// FGUtil.getTextField(item, "times").text = `${info.des}:${info.desValue > info.desMax ? info.desMax : info.desValue}/${info.desMax}${info.desSuffix}`;
|
||
// } else
|
||
// FGUtil.getTextField(item, "times").text = "";
|
||
|
||
// // 顯示活躍度
|
||
// if (info.activityDes) {
|
||
// FGUtil.getTextField(item, "activity").text = `${info.activityDes}:${info.activityValue > info.activityMax ? info.activityMax : info.activityValue}/${info.activityMax}`;
|
||
// } else
|
||
// FGUtil.getTextField(item, "activity").text = "";
|
||
|
||
// 顯示限制時間
|
||
FGUtil.getTextField(item, "time").text = info.fixedTime;
|
||
|
||
var goBtn = FGUtil.getButton(item, "go");
|
||
goBtn.node["goNpc"] = info.goPos;
|
||
goBtn.onClick(this.goNpc, this);
|
||
|
||
item.node["idx"] = idx;
|
||
item.onClick(this.clickActivityItem, this);
|
||
|
||
var iconBtn = FGUtil.getComponent(item, "icon");
|
||
iconBtn.node["idx"] = idx;
|
||
iconBtn.onClick(this.clickActivityInfo, this);
|
||
|
||
FGUtil.getComponent(item, "set").onClick(this.clickSet, this);
|
||
}
|
||
|
||
|
||
initActivityChildItem(item, info) {
|
||
var inTime = this.checkInTime(info.startTime, info.endTime);
|
||
|
||
if (info.finish) //已完成
|
||
FGUtil.getControl(item, "finish").selectedIndex = 1;
|
||
else { // 未完成狀態
|
||
if (inTime == -1)//已結束
|
||
FGUtil.getControl(item, "finish").selectedIndex = 2;
|
||
else
|
||
FGUtil.getControl(item, "finish").selectedIndex = 0;
|
||
}
|
||
|
||
if (info.hasGo) {
|
||
// 如果完成就不再顯示前往
|
||
if (info.finish)
|
||
FGUtil.getControl(item, "goTo").selectedIndex = 0;
|
||
// 如果有時間限制
|
||
else if (info.fixedTime != "" && SKDataUtil.hasProperty(info.startTime, "d") && info.startTime.d != -1) {
|
||
if (inTime == 1) {
|
||
// 處於限制時間內,顯示前往
|
||
FGUtil.getControl(item, "goTo").selectedIndex = 1;
|
||
FGUtil.getControl(item, "showTime").selectedIndex = 0;
|
||
} else if (inTime == 0) {
|
||
// 未開始,顯示時間
|
||
FGUtil.getControl(item, "goTo").selectedIndex = 0;
|
||
FGUtil.getControl(item, "showTime").selectedIndex = 1;
|
||
} else if (inTime == -1) {
|
||
// 已結束
|
||
FGUtil.getControl(item, "goTo").selectedIndex = 0;
|
||
FGUtil.getControl(item, "showTime").selectedIndex = 0;
|
||
}
|
||
}
|
||
else //顯示前往
|
||
FGUtil.getControl(item, "goTo").selectedIndex = 1;
|
||
} else
|
||
FGUtil.getControl(item, "goTo").selectedIndex = 0;
|
||
|
||
// 顯示任務名稱
|
||
FGUtil.getTextField(item, "name").text = info.name;
|
||
|
||
// 顯示任務圖標
|
||
FGUtil.getLoader(item, "icon").url = `ui://main_ui/${info.icon}`;
|
||
|
||
// 顯示高獎勵類型
|
||
FGUtil.getLoader(item, "typeIcon").url = `ui://main_ui/${info.tipType}`;
|
||
|
||
// 顯示次數描述
|
||
if (info.des) {
|
||
FGUtil.getTextField(item, "times").text = `${info.des}:${info.desValue}/${info.desMax}${info.desSuffix}`;
|
||
} else
|
||
FGUtil.getTextField(item, "times").text = "";
|
||
|
||
// 顯示活躍度
|
||
if (info.activityDes) {
|
||
FGUtil.getTextField(item, "activity").text = `${info.activityDes}:${info.activityValue}/${info.activityMax}`;
|
||
} else
|
||
FGUtil.getTextField(item, "activity").text = "";
|
||
|
||
// 顯示限制時間
|
||
FGUtil.getTextField(item, "time").text = info.fixedTime;
|
||
|
||
var goBtn = FGUtil.getButton(item, "go");
|
||
goBtn.node["goNpc"] = info.goPos;
|
||
goBtn.onClick(this.goNpc, this);
|
||
|
||
item.node["info"] = info;
|
||
item.onClick(this.clickActivityChildItem, this);
|
||
}
|
||
|
||
|
||
|
||
openInfoPanel(info : ActivityObj) {
|
||
if (!SKUIUtil.isFGUIValid(this.DailyInfoPanel)) {
|
||
this.DailyInfoPanel = FGUtil.create("main_ui", "activityInfoPanel");
|
||
FGUtil.root().addChild(this.DailyInfoPanel);
|
||
this.DailyInfoPanel.makeFullScreen();
|
||
}
|
||
|
||
var mask = FGUtil.getComponent(this.DailyInfoPanel, "mask");
|
||
this.pushCloseEvent(mask, this.DailyInfoPanel);
|
||
|
||
FGUtil.getTextField(this.DailyInfoPanel, "alert/name").text = info.name;
|
||
FGUtil.getTextField(this.DailyInfoPanel, "alert/name").color = SKUIUtil.colorOfString(info.titleColor);
|
||
|
||
FGUtil.getRichTextField(this.DailyInfoPanel, "alert/des").text = info.taskDes;
|
||
|
||
var list = FGUtil.getList(this.DailyInfoPanel, "alert/list");
|
||
list.removeChildren();
|
||
for (let i in info.reward) {
|
||
var item = list.addItem().asCom;
|
||
var rewardInfo = info.reward[i]
|
||
FGUtil.getLoader(item, "icon").url = `ui://main_ui/${ItemUtil.getItemData(rewardInfo.id).icon}`;
|
||
if (rewardInfo.num > 0)
|
||
FGUtil.getTextField(item, "num").text = `${SKDataUtil.transform(rewardInfo.num)}`;
|
||
else
|
||
FGUtil.getTextField(item, "num").text = "";
|
||
}
|
||
FGUtil.getControl(this.DailyInfoPanel, "alert/moreReward").selectedIndex = Math.ceil(info.reward.length / 4)
|
||
}
|
||
|
||
|
||
/**
|
||
* 檢測是否處於活動時間
|
||
*/
|
||
checkInTime(start, end) {
|
||
var tt = new Date()
|
||
if (start.d == -1) return 0;
|
||
if (start.d == 0) {
|
||
// 每一天的這個時間
|
||
var t = new Date();
|
||
var s = new Date(Date.parse(`${t.getFullYear()}-${t.getMonth() + 1}-${t.getDate()} ${start.h}:${start.m}`));
|
||
var e = new Date(Date.parse(`${t.getFullYear()}-${t.getMonth() + 1}-${t.getDate()} ${end.h}:${end.m}`));
|
||
var c = t.getTime();
|
||
if (c >= s.getTime() && c <= e.getTime())// 處於限制時間內
|
||
return 1;
|
||
if (c < s.getTime())// 未開始
|
||
return 0;
|
||
if (c > e.getTime())// 已結束
|
||
return -1;
|
||
} else {
|
||
// 每週的這個時間
|
||
var t = new Date();
|
||
var today = t.getDay();
|
||
if (today - end.d > 0) // 已結束
|
||
return -1;
|
||
if (today - start.d < 0)//未開始
|
||
return 0;
|
||
// 剩下的情況就是當天
|
||
var s = new Date(Date.parse(`${t.getFullYear()}-${t.getMonth() + 1}-${t.getDate()} ${start.h}:${start.m}`));
|
||
var e = new Date(Date.parse(`${t.getFullYear()}-${t.getMonth() + 1}-${t.getDate()} ${end.h}:${end.m}`));
|
||
var c = t.getTime();
|
||
if (c >= s.getTime() && c <= e.getTime())// 處於限制時間內
|
||
return 1;
|
||
if (c < s.getTime())// 未開始
|
||
return 0;
|
||
if (c > e.getTime())// 已結束
|
||
return -1;
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
/**
|
||
* 根據當前選擇的類型刷新列表
|
||
* @returns
|
||
*/
|
||
refreshActivityListByType() {
|
||
if (!SKUIUtil.isFGUIValid(this.DailyActivityPanel)) return;
|
||
var type = FGUtil.getControl(this.DailyActivityPanel, "alert/type").selectedIndex;
|
||
if (type == DailyClassType.UNKNOW)
|
||
this.refreshActivityList();
|
||
else if (type == DailyClassType.EXP)
|
||
this.clickExpType();
|
||
else if (type == DailyClassType.GOLD)
|
||
this.clickGoldType();
|
||
else if (type == DailyClassType.RELAX)
|
||
this.clickRelaxType();
|
||
}
|
||
|
||
refreshActivityList() {
|
||
if (!SKUIUtil.isFGUIValid(this.DailyActivityPanel)) return;
|
||
this.activityList = DailyActivityData.activityList;
|
||
var list = FGUtil.getList(this.DailyActivityPanel, "alert/list");
|
||
|
||
if (list.numItems != this.activityList.length)
|
||
list.numItems = this.activityList.length;
|
||
else
|
||
list.refreshVirtualList();
|
||
}
|
||
|
||
refreshActivityCount() {
|
||
if (!SKUIUtil.isFGUIValid(this.DailyActivityPanel)) return;
|
||
FGUtil.getProgressBar(this.DailyActivityPanel, "alert/activityPB").value = DailyActivityData.activityScore;
|
||
}
|
||
|
||
refreshActivityPrize() {
|
||
if (!SKUIUtil.isFGUIValid(this.DailyActivityPanel)) return;
|
||
var list = DailyActivityData.activityPrize;
|
||
if (!list || list.length == 0) return
|
||
for (let i = 1; i <= 6; i++) {
|
||
if (!list[i - 1]) break;
|
||
var item = FGUtil.getComponent(this.DailyActivityPanel, `alert/activityReward${i}`);
|
||
FGUtil.getLoader(item, "icon").url = `ui://main_ui/${ItemUtil.getItemData(list[i - 1].id).icon}`;
|
||
FGUtil.getTextField(item, "num").text = SKDataUtil.transform(list[i - 1].num);
|
||
FGUtil.getControl(item, "get").selectedIndex = list[i - 1].get;
|
||
}
|
||
}
|
||
|
||
refreshDouble() {
|
||
if (!SKUIUtil.isFGUIValid(this.DailyActivityPanel)) return;
|
||
var tx = FGUtil.getTextField(this.DailyActivityPanel, "alert/n42");
|
||
tx.text = `已領取:${DailyActivityData.doublePoint ? DailyActivityData.doublePoint : 0}\n可領取:${DailyActivityData.doubleCanget}`
|
||
}
|
||
|
||
clickActivityInfo(e : Event, id : number = 0) {
|
||
var idx = 0;
|
||
if (SKDataUtil.hasProperty(e.target, "idx"))
|
||
idx = e.target["idx"];
|
||
else
|
||
idx = id;
|
||
|
||
var info : ActivityObj = this.activityList[idx];
|
||
this.openInfoPanel(info)
|
||
}
|
||
|
||
clearChildActivity() {
|
||
if (DailyActivityData.showChild && DailyActivityData.showChildIdx >= 0) {
|
||
DailyActivityData.activityList[DailyActivityData.showChildIdx].expanded = false;
|
||
DailyActivityData.showChild = false;
|
||
DailyActivityData.showChildIdx = -1;
|
||
}
|
||
|
||
for (let i in DailyActivityData.activityList) {
|
||
if (DailyActivityData.activityList[i].isChild) {
|
||
DailyActivityData.activityList.splice(i, 1)
|
||
break
|
||
}
|
||
}
|
||
for (let i in DailyActivityData.activityList) {
|
||
if (DailyActivityData.activityList[i].isEmpty) {
|
||
DailyActivityData.activityList.splice(i, 1)
|
||
break
|
||
}
|
||
}
|
||
}
|
||
|
||
addChildActivity(idx) {
|
||
var temp = SKDataUtil.cloneClass(DailyActivityData.activityList[idx])
|
||
var tempEpmty = SKDataUtil.cloneClass(DailyActivityData.activityList[idx])
|
||
temp.isChild = true;
|
||
|
||
if (idx % 2 == 0) { //是左側的父按鈕
|
||
if (idx != DailyActivityData.activityList.length - 1) {
|
||
//不是最後一個
|
||
tempEpmty.isEmpty = Math.ceil(temp.childList.length / 2) >= 3 ? 3 : Math.ceil(temp.childList.length / 2);
|
||
DailyActivityData.activityList.splice(idx + 2, 0, temp, tempEpmty)
|
||
}
|
||
else {
|
||
// 是在最後插入
|
||
tempEpmty.isEmpty = 1;
|
||
DailyActivityData.activityList.splice(idx + 1, 0, tempEpmty, temp)
|
||
}
|
||
} else {
|
||
tempEpmty.isEmpty = Math.ceil(temp.childList.length / 2) >= 3 ? 3 : Math.ceil(temp.childList.length / 2);
|
||
DailyActivityData.activityList.splice(idx + 1, 0, temp, tempEpmty)
|
||
}
|
||
}
|
||
|
||
clickActivityItem(e : Event) {
|
||
var idx = 0;
|
||
|
||
if (SKDataUtil.hasProperty(e.target, "idx"))
|
||
idx = e.target["idx"];
|
||
|
||
var info : ActivityObj = this.activityList[idx];
|
||
|
||
// 當前是展開狀態
|
||
if (DailyActivityData.showChild) {
|
||
// 點擊的是其他活動
|
||
if (idx != DailyActivityData.showChildIdx) {
|
||
// 先關閉之前打開的
|
||
this.clearChildActivity();
|
||
|
||
if (info.childList.length > 0) {
|
||
// 有子按鈕,展開現在選擇的
|
||
info.expanded = true;
|
||
DailyActivityData.showChild = info.expanded;
|
||
var tempIdx = -1
|
||
for (let i in DailyActivityData.activityList) {
|
||
if (DailyActivityData.activityList[i].expanded) {
|
||
tempIdx = parseInt(i)
|
||
break
|
||
}
|
||
}
|
||
DailyActivityData.showChildIdx = tempIdx;
|
||
this.addChildActivity(tempIdx);
|
||
}
|
||
} else {
|
||
this.clearChildActivity();
|
||
}
|
||
this.refreshActivityListByType();
|
||
} else { // 當前是關閉狀態
|
||
if (info.childList.length > 0) {
|
||
// 有子按鈕,展開
|
||
info.expanded = true;
|
||
DailyActivityData.showChild = info.expanded;
|
||
DailyActivityData.showChildIdx = idx;
|
||
this.addChildActivity(idx);
|
||
this.refreshActivityListByType();
|
||
}
|
||
}
|
||
|
||
if (info.childList.length == 0)
|
||
this.openInfoPanel(info);
|
||
}
|
||
|
||
clickActivityChildItem(e : Event) {
|
||
var info;
|
||
if (SKDataUtil.hasProperty(e.target, "info")) {
|
||
info = e.target["info"];
|
||
}
|
||
else return;
|
||
this.openInfoPanel(info);
|
||
}
|
||
|
||
/**
|
||
* 前往NPC處
|
||
*/
|
||
goNpc(e : Event) {
|
||
var npc = 0;
|
||
if (SKDataUtil.hasProperty(e.target, "goNpc"))
|
||
npc = e.target["goNpc"];
|
||
e.stopPropagation();
|
||
|
||
if (npc == 10054 && GameModel.player.bangid == 0) { //幫派任務
|
||
MsgAlert.addMsg("請先加入幫派");
|
||
return;
|
||
}
|
||
|
||
if (npc == -666) {
|
||
// 師門
|
||
if (GameModel.player.race == 1)
|
||
npc = 30062;
|
||
if (GameModel.player.race == 2)
|
||
npc = 10118;
|
||
if (GameModel.player.race == 3)
|
||
npc = 30063;
|
||
if (GameModel.player.race == 4)
|
||
npc = 30065;
|
||
if (GameModel.player.race == 5)
|
||
npc = 70006;
|
||
}
|
||
let stPos = g_NpcMgr.GetNpcPos(npc);
|
||
|
||
GameUtil.myPlayerToDo(stPos.nMap, stPos.nX, stPos.nY, () => {
|
||
let temp = g_NpcMgr.FindNpcByConfigID(npc);
|
||
if (temp) {
|
||
let npc = temp.getComponent("Npc");
|
||
npc.OnNpcClick();
|
||
}
|
||
});
|
||
this.closePanel();
|
||
}
|
||
|
||
/**
|
||
* 點擊領取活躍度獎勵
|
||
*/
|
||
clickReward1() {
|
||
this.clickReward(1);
|
||
}
|
||
|
||
clickReward2() {
|
||
this.clickReward(2);
|
||
}
|
||
|
||
clickReward3() {
|
||
this.clickReward(3);
|
||
}
|
||
|
||
clickReward4() {
|
||
this.clickReward(4);
|
||
}
|
||
|
||
clickReward5() {
|
||
this.clickReward(5);
|
||
}
|
||
|
||
clickReward6() {
|
||
this.clickReward(6);
|
||
}
|
||
|
||
clickReward(idx) {
|
||
console.log("on click", idx)
|
||
if (DailyActivityData.activityScore < idx * 25 || DailyActivityData.activityPrize[idx - 1].get == 1) {
|
||
// 活躍度不足顯示獎勵信息
|
||
console.log("活躍度不足顯示獎勵信息")
|
||
let itemid = DailyActivityData.activityPrize[idx - 1].id
|
||
let itemData = ItemUtil.getItemData(itemid)
|
||
this.showInfo(itemData)
|
||
} else {
|
||
GameModel.send('c2s_take_active_prize', { nIndex: idx - 1 });
|
||
}
|
||
}
|
||
|
||
showInfo(itemInfo) {
|
||
cc.loader.loadRes("Prefabs/BagItemDetail", cc.Prefab, (err, prefab) => {
|
||
if (err) {
|
||
console.log(err)
|
||
return
|
||
}
|
||
if (itemInfo != null) {
|
||
let detail = cc.instantiate(prefab);
|
||
detail.parent = this.DailyActivityPanel.node;
|
||
detail.setPosition(this.DailyActivityPanel.node.width / 2, -this.DailyActivityPanel.node.height / 2)
|
||
detail.name = 'BagItemDetail';
|
||
detail.getComponent('BagItemDetail').loadInfo(itemInfo);
|
||
}
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 點擊顯示全部類型
|
||
*/
|
||
clickAllType() {
|
||
this.clearChildActivity();
|
||
this.refreshActivityList();
|
||
}
|
||
|
||
clickExpType() {
|
||
if (!SKUIUtil.isFGUIValid(this.DailyActivityPanel)) return;
|
||
this.clearChildActivity();
|
||
var tempList = [];
|
||
for (let i in DailyActivityData.activityList) {
|
||
if (DailyActivityData.activityList[i].classType == DailyClassType.EXP)
|
||
tempList.push(DailyActivityData.activityList[i])
|
||
}
|
||
this.activityList = tempList;
|
||
FGUtil.getList(this.DailyActivityPanel, "alert/list").numItems = this.activityList.length;
|
||
}
|
||
|
||
clickGoldType() {
|
||
if (!SKUIUtil.isFGUIValid(this.DailyActivityPanel)) return;
|
||
this.clearChildActivity();
|
||
var tempList = [];
|
||
for (let i in DailyActivityData.activityList) {
|
||
if (DailyActivityData.activityList[i].classType == DailyClassType.GOLD)
|
||
tempList.push(DailyActivityData.activityList[i])
|
||
}
|
||
this.activityList = tempList;
|
||
FGUtil.getList(this.DailyActivityPanel, "alert/list").numItems = this.activityList.length;
|
||
}
|
||
|
||
clickRelaxType() {
|
||
if (!SKUIUtil.isFGUIValid(this.DailyActivityPanel)) return;
|
||
this.clearChildActivity();
|
||
var tempList = [];
|
||
for (let i in DailyActivityData.activityList) {
|
||
if (DailyActivityData.activityList[i].classType == DailyClassType.RELAX)
|
||
tempList.push(DailyActivityData.activityList[i])
|
||
}
|
||
this.activityList = tempList;
|
||
FGUtil.getList(this.DailyActivityPanel, "alert/list").numItems = this.activityList.length;
|
||
}
|
||
|
||
/**
|
||
* 點擊領取雙倍經驗
|
||
*/
|
||
clickDoubleExp() {
|
||
if (DailyActivityData.doubleCanget <= 0) {
|
||
MsgAlert.addMsg("沒有可領取的雙倍點數");
|
||
return;
|
||
}
|
||
GameModel.send("c2s_get_doublecnt", {
|
||
roleid: GameModel.player.roleid
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 點擊熱點
|
||
*/
|
||
clickHotDot() {
|
||
MsgAlert.addMsg("暫未開放");
|
||
}
|
||
|
||
/**
|
||
* 點擊設置推送
|
||
*/
|
||
clickTuiSong() {
|
||
MsgAlert.addMsg("暫未開放");
|
||
}
|
||
|
||
/**
|
||
* 點擊設置
|
||
*/
|
||
clickSet(e : Event) {
|
||
MsgAlert.addMsg("暫未開放");
|
||
e.stopPropagation()
|
||
}
|
||
closePanel() {
|
||
this.clearChildActivity();
|
||
if (DailyActivityData.showChildIdx != -1) {
|
||
DailyActivityData.activityList[DailyActivityData.showChildIdx].expanded = false
|
||
DailyActivityData.showChildIdx = -1;
|
||
}
|
||
DailyActivityData.showChild = false;
|
||
FGUtil.dispose(this.DailyActivityPanel);
|
||
this.DailyActivityPanel = null;
|
||
}
|
||
|
||
/**
|
||
* 添加關閉事件
|
||
*/
|
||
pushCloseEvent(item : fairygui.GComponent, target : fairygui.GComponent, call : Function = null) {
|
||
item.clearClick();
|
||
item.onClick(() => {
|
||
call && call()
|
||
FGUtil.dispose(target);
|
||
target = null;
|
||
}, this)
|
||
}
|
||
|
||
OnReceiveDailyInfo(data) {
|
||
// 計算總活躍度
|
||
var scoreSum = this.GetMapSum(data.mapActiveScore);
|
||
scoreSum = scoreSum >= 0 ? scoreSum <= 170 ? scoreSum : 170 : 0;
|
||
DailyActivityData.activityScore = scoreSum;
|
||
|
||
// 獎勵列表
|
||
var prizeList = [];
|
||
var getList = data.szBeenTake;
|
||
var pzList = data.szActivePrize;
|
||
for (let i in pzList) {
|
||
var gift = pzList[i].split(",")
|
||
prizeList.push({ id: gift[0], num: gift[1], get: getList[i] })
|
||
}
|
||
DailyActivityData.activityPrize = prizeList;
|
||
|
||
// 計算次數和活躍度
|
||
var countData = data.mapDailyCnt;
|
||
var countDataFuBen = data.mapFuBenCnt;
|
||
var huoyueData = data.mapActiveScore;
|
||
|
||
|
||
// 大雁塔次數需要減一
|
||
if (countDataFuBen[1001])
|
||
countDataFuBen[1001] = countDataFuBen[1001] - 1;
|
||
|
||
// 地宮完成次數為2則是完成,1是領取
|
||
if (countDataFuBen[1004]) countDataFuBen[1004] = Math.floor(countDataFuBen[1004] / 2);
|
||
if (countDataFuBen[1005]) countDataFuBen[1005] = Math.floor(countDataFuBen[1005] / 2);
|
||
if (countDataFuBen[1006]) countDataFuBen[1006] = Math.floor(countDataFuBen[1006] / 2);
|
||
// 地宮三種難度次數合一
|
||
if (!countDataFuBen[1004]) countDataFuBen[1004] = 0;
|
||
if (countDataFuBen[1005])
|
||
countDataFuBen[1004] += countDataFuBen[1005];
|
||
if (countDataFuBen[1006])
|
||
countDataFuBen[1004] += countDataFuBen[1006];
|
||
// 地宮三種難度活躍度合一
|
||
if (!huoyueData[1004]) huoyueData[1004] = 0;
|
||
if (huoyueData[1005])
|
||
huoyueData[1004] += huoyueData[1005];
|
||
if (huoyueData[1006])
|
||
huoyueData[1004] += huoyueData[1006];
|
||
|
||
for (let i in DailyActivityData.activityList) {
|
||
var id = DailyActivityData.activityList[i].id;
|
||
// 普通活动次数
|
||
if (huoyueData[id])
|
||
DailyActivityData.activityList[i].activityValue = huoyueData[id];
|
||
// 副本活動次數
|
||
if (countDataFuBen[id])
|
||
DailyActivityData.activityList[i].desValue = countDataFuBen[id];
|
||
// 活躍度
|
||
if (countData[id])
|
||
DailyActivityData.activityList[i].desValue = countData[id];
|
||
if (DailyActivityData.activityList[i].activityValue >= DailyActivityData.activityList[i].activityMax && DailyActivityData.activityList[i].desValue >= DailyActivityData.activityList[i].desMax) {
|
||
DailyActivityData.activityList[i].finish = true;
|
||
}
|
||
|
||
if (DailyActivityData.activityList[i].childList.length > 0) {
|
||
// 子任務
|
||
var child = DailyActivityData.activityList[i].childList;
|
||
for (let m in child) {
|
||
var id = child[m].id;
|
||
if (countData[id])
|
||
child[m].activityValue = huoyueData[id];
|
||
if (huoyueData[id])
|
||
child[m].desValue = countData[id];
|
||
|
||
if (child[m].activityValue == child[m].activityMax && child[m].desValue == child[m].desMax) {
|
||
child[m].finish = true;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
DailyActivityData.doublePoint = data.doublecnt;
|
||
DailyActivityData.doubleCanget = data.canget;
|
||
|
||
this.refreshActivityListByType();
|
||
this.refreshActivityCount();
|
||
this.refreshActivityPrize();
|
||
this.refreshDouble();
|
||
}
|
||
|
||
GetMapSum(mapTmp) {
|
||
let nNum = 0;
|
||
for (const it in mapTmp) {
|
||
nNum += mapTmp[it];
|
||
}
|
||
return nNum;
|
||
}
|
||
} |