觉醒时刻
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

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()
}
}