You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
356 lines
15 KiB
356 lines
15 KiB
import { ryw_Event } from "../../../FrameWork/Event/EventEnum";
|
|
import EventMgr from "../../../FrameWork/Event/EventMgr";
|
|
import GameReport from "../../../FrameWork/Report/ZyZyReport";
|
|
import User from "../../../FrameWork/User/User";
|
|
import AppPlatform from "../../../FrameWork/Util/AppPlatform";
|
|
import Common5 from "../../../Platform/th/Common5";
|
|
import JuQingManager from "../../JuQingChat/JuQingManager";
|
|
import TaskManager, { MainTaskIdEnum } from "../../JuQingChat/TaskManager";
|
|
import BagManager from "../../Manager/BagManager";
|
|
import UserManager from "../../Manager/UserManager";
|
|
import NewGuideScript from "../../NewGuide/NewGuideScript";
|
|
import PrefabManage, { GameType } from "../../PrefabManager/PrefabManage";
|
|
import GameBase from "../../SCommon/GameBase";
|
|
import GetAward from "../../SCommon/GetAward";
|
|
|
|
const { ccclass, property } = cc._decorator;
|
|
|
|
|
|
@ccclass
|
|
export default class ShiCaiHuiShou extends GameBase {
|
|
|
|
@property(cc.Node)
|
|
foodPrefab: cc.Node = null; // 食材预制体
|
|
|
|
@property(cc.Node)
|
|
foodNodeBox: cc.Node = null; // 食材盒子
|
|
|
|
@property(cc.Node)
|
|
FoodShelves: cc.Node = null; // 食材货架
|
|
|
|
@property(cc.Node)
|
|
moveNode: cc.Node = null; // 食材预制体
|
|
|
|
@property(cc.Node)
|
|
tipBox: cc.Node = null; // 食材预制体
|
|
|
|
GenerateFoodMaxNumber: number = 100; // 生成食材的最大数量
|
|
GenerateFoodAddNumber: number = 20; // 生成食材的增量
|
|
GenerateFoodProportion: number[] = [0.5, 0.1, 0.4]; // 食材生成比例
|
|
GenerateFoodFrameNumber: number = 3; // 每帧生成食材的数量
|
|
FoodPriceListConfig: number[] = [10, 100, 50]; // 食材价格列表
|
|
|
|
maskGuideNode: cc.Node = null; // 遮罩层
|
|
private foodPool: cc.NodePool = null; // 食材池
|
|
|
|
onLoad() {
|
|
super.onLoad()
|
|
}
|
|
onDestroy(): void {
|
|
if (cc.isValid(this.maskGuideNode)) {
|
|
this.maskGuideNode.removeFromParent()
|
|
this.maskGuideNode.destroy()
|
|
}
|
|
super.onDestroy();
|
|
|
|
EventMgr.emitEvent_custom(ryw_Event.RefreshJuQingDuiHua);
|
|
}
|
|
|
|
protected start(): void {
|
|
this.foodPool = new cc.NodePool();
|
|
this.refreshFoods();
|
|
|
|
EventMgr.onEvent_custom(ryw_Event.NormalTouchEndCheck, (data_) => {
|
|
this.foodClickCallback(data_.targetNode);
|
|
}, this);
|
|
}
|
|
|
|
// 刷新食材
|
|
refreshFoods(isAD: boolean = false) {
|
|
for (const element of this.foodNodeBox.children) {
|
|
element.stopAllActions();
|
|
this.foodPool.put(element);
|
|
}
|
|
|
|
let foodDataList = this.generateFoodData(this.GenerateFoodMaxNumber).concat(this.addTaskGoods(isAD));
|
|
|
|
this.node.getChildByName('inputBlack').active = true;
|
|
this.generateFood(0, foodDataList);
|
|
}
|
|
|
|
// 生成食材数据
|
|
generateFoodData(generateFoodMaxNumber: number) {
|
|
const iconNameConfig = [
|
|
["菜-包菜", "菜-大白菜", "菜-大葱", "菜-洋葱", "菜-白萝卜", "菜-胡萝卜", "菜-芹菜", "菜-茄子", "菜-西兰花", "菜-黄瓜"],
|
|
["海-扇贝", "海-海参", "海-生蚝", "海-螃蟹", "海-鱿鱼"],
|
|
["肉-五花肉", "肉-大火腿", "肉-大闸蟹", "肉-排骨", "肉-牛排", "肉-猪蹄", "肉-鸡翅", "肉-鸡腿", "肉-鸭掌", "肉-鸭腿"]
|
|
];
|
|
|
|
let foodDataList: any[] = [];
|
|
for (let type = 0; type < this.GenerateFoodProportion.length; type++) {
|
|
const MaxNumber = this.GenerateFoodProportion[type] * generateFoodMaxNumber;
|
|
for (let i = 0; i < MaxNumber; i++) {
|
|
let foodinfo: any = {};
|
|
foodinfo.x = Math.floor(Math.random() * 500 - 250);
|
|
foodinfo.y = Math.floor(Math.random() * 300 - 130);
|
|
foodinfo.type = type;
|
|
let iconNameList = iconNameConfig[type];
|
|
foodinfo.icon = iconNameList[Math.floor(Math.random() * iconNameList.length)];
|
|
foodDataList.push(foodinfo);
|
|
}
|
|
}
|
|
|
|
foodDataList.sort(function () {
|
|
return 0.5 - Math.random()
|
|
});
|
|
return foodDataList;
|
|
}
|
|
|
|
// 添加任务道具
|
|
addTaskGoods(isAD: boolean = false) {
|
|
let taskGoodsList: any[] = [];
|
|
const taskInfo: any = TaskManager.getCurUnLockMainTaskInfo();
|
|
if (taskInfo.Id && taskInfo.Id != MainTaskIdEnum.MainTask_None) {
|
|
const configData = TaskManager.getTaskConfigById(taskInfo.Id);
|
|
if (configData && configData.GMGameType == "ShiCaiHuiShou" && configData.taskCaiGouDan) {
|
|
let list_ = configData.taskCaiGouDan.filter((value, index, self) => {
|
|
if (configData.GMGoodIdArray) {
|
|
for (const id of configData.GMGoodIdArray) {
|
|
if (id == value) return false;
|
|
}
|
|
}
|
|
if (BagManager.getBagGoodNums(value) > 0) {
|
|
return false;
|
|
}
|
|
return true;
|
|
})
|
|
|
|
if (isAD && configData.GMGoodIdArray) {
|
|
for (let id of configData.GMGoodIdArray) {
|
|
if (BagManager.getBagGoodNums(id) == 0) {
|
|
list_.push(id);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
for (let i = 0; i < list_.length; i++) {
|
|
let foodinfo: any = {};
|
|
foodinfo.x = Math.floor(Math.random() * 500 - 250);
|
|
foodinfo.y = Math.floor(Math.random() * 300 - 130);
|
|
foodinfo.type = 999;
|
|
foodinfo.icon = list_[i];
|
|
taskGoodsList.push(foodinfo);
|
|
}
|
|
}
|
|
}
|
|
return taskGoodsList;
|
|
};
|
|
|
|
// 生成食材
|
|
generateFood(index: number, foodDataList: any[]) {
|
|
let generateNum = this.GenerateFoodFrameNumber;
|
|
if (index + generateNum >= foodDataList.length) {
|
|
generateNum = foodDataList.length - index;
|
|
}
|
|
|
|
for (let i = 0; i < generateNum; i++) {
|
|
let foodNode = this.foodPool.get();
|
|
if (foodNode == null) {
|
|
foodNode = cc.instantiate(this.foodPrefab);
|
|
}
|
|
foodNode.active = true;
|
|
this.foodNodeBox.addChild(foodNode);
|
|
foodNode.setPosition(foodDataList[index].x, foodDataList[index].y);
|
|
foodNode['type'] = foodDataList[index].type;
|
|
if (foodDataList[index].type == 999) {
|
|
foodNode['GoodsId'] = foodDataList[index].icon;
|
|
}
|
|
Common5.getSpriteFrameFromBundle("shicaihuishou", "texture/食材/" + foodDataList[index].icon, foodNode.getComponent(cc.Sprite));
|
|
index++;
|
|
}
|
|
|
|
if (index < foodDataList.length) {
|
|
this.scheduleOnce(() => {
|
|
this.generateFood(index, foodDataList);
|
|
}, 0);
|
|
} else {
|
|
this.node.getChildByName('inputBlack').active = false;
|
|
|
|
let mainTaskInfo: any = TaskManager.getCurUnLockMainTaskInfo();
|
|
let mainId = mainTaskInfo.Id;
|
|
if (mainId == MainTaskIdEnum.MainTask_204) {
|
|
for (let index = 1; index <= 3; index++) {
|
|
const element = this.foodNodeBox.children[this.foodNodeBox.childrenCount - index];
|
|
let guide = cc.instantiate(this.node.getChildByName('引导效果'));
|
|
element.addChild(guide);
|
|
guide.active = true;
|
|
guide.setPosition(0, 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// 添加食材
|
|
addFood(index: number, foodDataList: any[]) {
|
|
let generateNum = this.GenerateFoodFrameNumber;
|
|
if (index + generateNum >= foodDataList.length) {
|
|
generateNum = foodDataList.length - index;
|
|
}
|
|
|
|
for (let i = 0; i < generateNum; i++) {
|
|
let foodNode = this.foodPool.get();
|
|
if (foodNode == null) {
|
|
foodNode = cc.instantiate(this.foodPrefab);
|
|
}
|
|
foodNode.active = true;
|
|
this.foodNodeBox.insertChild(foodNode, 0);
|
|
foodNode.setPosition(foodDataList[index].x, foodDataList[index].y);
|
|
foodNode['type'] = foodDataList[index].type;
|
|
Common5.getSpriteFrameFromBundle("shicaihuishou", "texture/食材/" + foodDataList[index].icon, foodNode.getComponent(cc.Sprite));
|
|
index++;
|
|
}
|
|
|
|
if (index < foodDataList.length) {
|
|
this.scheduleOnce(() => {
|
|
this.addFood(index, foodDataList);
|
|
}, 0);
|
|
}
|
|
}
|
|
|
|
// 食材点击回调
|
|
foodClickCallback(targetNode: cc.Node) {
|
|
if (targetNode['type'] == 999) {
|
|
targetNode.active = false;
|
|
let goodArray = [{ goodId: targetNode['GoodsId'], goodNum: 1 }];
|
|
PrefabManage.loadPrefabByType(GameType.GetAward, null, (prefabNode) => {
|
|
prefabNode.getComponent(GetAward).initView(goodArray, () => {
|
|
let mainTaskInfo: any = TaskManager.getCurUnLockMainTaskInfo()
|
|
let mainId = mainTaskInfo.Id
|
|
if (mainId == MainTaskIdEnum.MainTask_705) {
|
|
let taskCaiGouDan = TaskManager.getTaskConfigById(mainId).taskCaiGouDan;
|
|
for (const goodId of taskCaiGouDan) {
|
|
if (BagManager.getBagGoodNums(goodId) == 0) {
|
|
return;
|
|
}
|
|
}
|
|
TaskManager.finishCurMainTask(MainTaskIdEnum.MainTask_705);
|
|
TaskManager.setCurUnLockMainTaskInfo(MainTaskIdEnum.MainTask_706);
|
|
} else if (mainId == MainTaskIdEnum.MainTask_1101) {
|
|
let taskCaiGouDan = TaskManager.getTaskConfigById(mainId).taskCaiGouDan;
|
|
for (const goodId of taskCaiGouDan) {
|
|
if (BagManager.getBagGoodNums(goodId) == 0) {
|
|
return;
|
|
}
|
|
}
|
|
TaskManager.finishCurMainTask(MainTaskIdEnum.MainTask_1101);
|
|
TaskManager.setCurUnLockMainTaskInfo(MainTaskIdEnum.MainTask_1102);
|
|
} else if (mainId == MainTaskIdEnum.MainTask_1301) {
|
|
let taskCaiGouDan = TaskManager.getTaskConfigById(mainId).taskCaiGouDan;
|
|
for (const goodId of taskCaiGouDan) {
|
|
if (BagManager.getBagGoodNums(goodId) == 0) {
|
|
return;
|
|
}
|
|
}
|
|
TaskManager.finishCurMainTask(MainTaskIdEnum.MainTask_1301);
|
|
TaskManager.setCurUnLockMainTaskInfo(MainTaskIdEnum.MainTask_1302);
|
|
} else if (mainId == MainTaskIdEnum.MainTask_1703) {
|
|
let taskCaiGouDan = TaskManager.getTaskConfigById(mainId).taskCaiGouDan;
|
|
for (const goodId of taskCaiGouDan) {
|
|
if (BagManager.getBagGoodNums(goodId) == 0) {
|
|
return;
|
|
}
|
|
}
|
|
TaskManager.finishCurMainTask(MainTaskIdEnum.MainTask_1703);
|
|
TaskManager.setCurUnLockMainTaskInfo(MainTaskIdEnum.MainTask_1704);
|
|
} else if (mainId == MainTaskIdEnum.MainTask_2105) {
|
|
let taskCaiGouDan = TaskManager.getTaskConfigById(mainId).taskCaiGouDan;
|
|
for (const goodId of taskCaiGouDan) {
|
|
if (BagManager.getBagGoodNums(goodId) == 0) {
|
|
return;
|
|
}
|
|
}
|
|
TaskManager.finishCurMainTask(MainTaskIdEnum.MainTask_2105);
|
|
JuQingManager.unLockNewJuQing('WX_2103');
|
|
TaskManager.setCurUnLockMainTaskInfo(MainTaskIdEnum.MainTask_2106);
|
|
}
|
|
});
|
|
|
|
});
|
|
} else {
|
|
let type = targetNode['type'];
|
|
let FoodShelvesNode = this.FoodShelves.children[type];
|
|
let startPos = this.moveNode.convertToNodeSpaceAR(targetNode.convertToWorldSpaceAR(cc.v3(0, 0, 0)));
|
|
let endPos = this.moveNode.convertToNodeSpaceAR(FoodShelvesNode.convertToWorldSpaceAR(cc.v3(0, 0, 0)));
|
|
|
|
cc.tween(targetNode)
|
|
.set({ parent: this.moveNode, position: startPos })
|
|
.to(0.5, { position: endPos })
|
|
.call(() => {
|
|
UserManager.addMoney(this.FoodPriceListConfig[type], FoodShelvesNode);
|
|
this.checkIsFinish204(UserManager.getCurMoney())
|
|
this.scheduleOnce(() => {
|
|
targetNode.stopAllActions();
|
|
this.foodPool.put(targetNode);
|
|
});
|
|
// const incomePopUp = cc.instantiate(this.moveNode.getChildByName('incomePopUp'));
|
|
// incomePopUp.getComponent(cc.Label).string = "+" + this.FoodPriceListConfig[type] + "元";
|
|
// cc.tween(incomePopUp)
|
|
// .set({ active: true, parent: this.moveNode, position: endPos, opacity: 255 })
|
|
// .to(0.3, { position: cc.v3(endPos.x, endPos.y + 50, 0), scale: 1.5 })
|
|
// .to(0.2, { position: cc.v3(endPos.x, endPos.y + 100, 0), scale: 1 })
|
|
// .to(1, { position: cc.v3(endPos.x, endPos.y + 400, 0), opacity: 0 })
|
|
// .removeSelf()
|
|
// .start();
|
|
})
|
|
.start();
|
|
}
|
|
|
|
if (this.foodNodeBox.childrenCount <= this.GenerateFoodMaxNumber - this.GenerateFoodAddNumber) {
|
|
let foodDataList = this.generateFoodData(this.GenerateFoodAddNumber);
|
|
this.addFood(0, foodDataList);
|
|
}
|
|
//console.log(`this.foodPool:${this.foodPool.size()}`);
|
|
}
|
|
|
|
// 刷新食材
|
|
onRefreshFoodsAd() {
|
|
// Common5.playEffect("sound/按键点击");
|
|
this.node.getChildByName('inputBlack').active = true;
|
|
let tab = {
|
|
onClose: (finish) => {
|
|
if (finish) {
|
|
Common5.ReportDY("inLevel", '食材回收-AD-刷新食材');
|
|
this.reportKey(() => {
|
|
GameReport.ADReport('食材回收刷新食材', 1);
|
|
})
|
|
this.refreshFoods(true);
|
|
}
|
|
else {
|
|
this.reportKey(() => {
|
|
GameReport.ADReport('食材回收刷新食材', 0);
|
|
})
|
|
Common5.showTips_custom("广告未观看完");
|
|
}
|
|
}, onFailed: () => { }
|
|
}
|
|
AppPlatform.playVideo_custom(tab);
|
|
}
|
|
checkIsFinish204(money){
|
|
let mainTaskInfo:any = TaskManager.getCurUnLockMainTaskInfo()
|
|
let mainId = mainTaskInfo.Id
|
|
if(mainId == MainTaskIdEnum.MainTask_204){
|
|
if(money >= 500){
|
|
this.tipBox.active = true
|
|
}
|
|
}
|
|
}
|
|
qianWangClick(){
|
|
this.tipBox.active = false
|
|
TaskManager.finishCurMainTask(MainTaskIdEnum.MainTask_204)
|
|
TaskManager.setCurUnLockMainTaskInfo(MainTaskIdEnum.MainTask_205)
|
|
|
|
this.node.removeFromParent()
|
|
this.node.destroy()
|
|
}
|
|
}
|
|
|