123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- import gameScene from "./gameScene";
- import { App } from "./Manager/App";
- import { SoundManager } from "./Manager/SoundManager";
- import Beef, { FoodType } from "./Beef";
- const {ccclass, property} = cc._decorator;
- export enum PersonState {
- None = 0,
- Comming,
- Waite,
- FullOut,
- HungryOut,
- };
- @ccclass
- export default class Person extends cc.Component {
- @property(cc.ProgressBar)
- pBar: cc.ProgressBar = null;
- @property([cc.Prefab])
- foodKindPerfabs: cc.Prefab[] = [];
- @property(cc.Node)
- meun: cc.Node = null;
- @property(cc.Node)
- love: cc.Node = null;
-
- m_state = PersonState.Comming;
-
- leftTime = 50;
- m_pause = false;
- foodNum = 3;
- foodList: cc.Node[] = [];
- foodTypeList: FoodType[] = [];
- foodPos: cc.Vec2[] = [cc.v2(-105, 70), cc.v2(-105, 25), cc.v2(-105, -20)];
- // LIFE-CYCLE CALLBACKS:
- onLoad () {
- this.meun.active = false;
- this.love.active = false;
- // 点餐的数量
- // this.foodNum = Math.ceil(Math.random() * 3);
- for (let i = 0; i < this.foodNum; i++) {
- this.foodTypeList[i] = FoodType.None;
- }
- this.leftTime -= App.DataManager.CurrentIntoLevel;
- }
- start () {
- }
- public setState(state: PersonState){
- this.m_state = state;
- if(state == PersonState.Waite){
- this.meun.active = true;
-
- this.love.active = true;
- App.SpinManager.PlaySpinAnimation(this.love, "newAnimation", true);
- let guideGood = [0, 1, 2];
- let foodKind = App.DataManager.levelFoodKind[App.DataManager.CurrentIntoLevel - 1];
- for (let i = 0; i < this.foodNum; i++) {
- let foodIndex = Math.floor(Math.random() * foodKind);
- if(App.DataManager.guideStep < 5){
- foodIndex = guideGood[i];
- }
- let food = cc.instantiate(this.foodKindPerfabs[foodIndex]);
- food.setScale(0.5);
- food.setPosition(this.foodPos[i]);
- this.node.addChild(food);
- this.foodList[i] = food;
- this.foodTypeList[i] = foodIndex + 1;
- }
-
- this.pBar.progress = 1;
- if(!this.m_pause){
- cc.tween(this.pBar).to(this.leftTime, {progress: 0}).call(()=>{
- this.setState(PersonState.HungryOut);
- }).start();
- }
- }
- else if(state == PersonState.FullOut){
- App.DataManager.MissionComplete[2]++;
- App.LocalStorageUtil.setJsonObj(App.LocalStorageUtil.list_missionComplete, App.DataManager.MissionComplete);
- cc.Tween.stopAllByTarget(this.pBar);
- this.meun.active = false;
- this.love.active = false;
- }
- else if(state == PersonState.HungryOut){
- // gameFail
- gameScene.instance.GameFail();
- }
- }
- public getFoodWorldPos(foodt: FoodType): cc.Vec2{
- for (let i = 0; i < this.foodNum; i++) {
- if(this.foodTypeList[i] == foodt){
- this.addFoodCoin(foodt);
- this.foodTypeList[i] = FoodType.None;
- cc.tween(this.foodList[i]).delay(0.5).call(()=>{
- this.foodList[i].removeFromParent();
- this.foodList[i] = null;
- }).start();
- return this.node.convertToWorldSpaceAR(this.foodPos[i]);
- }
- }
- }
- addFoodCoin(foodt: FoodType){
- switch(foodt){
- case FoodType.PureSteak:
- App.DataManager.MissionComplete[0]++;
- gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[0][App.DataManager.foodLevel[0]];
- break;
- case FoodType.Drink:
- App.DataManager.MissionComplete[1]++;
- gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[1][App.DataManager.foodLevel[1]];
- break;
- case FoodType.CocumberSteak:
- App.DataManager.MissionComplete[0]++;
- gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[0][App.DataManager.foodLevel[0]];
- gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[2][App.DataManager.foodLevel[2]];
- break;
- case FoodType.TomatoSteak:
- App.DataManager.MissionComplete[0]++;
- gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[0][App.DataManager.foodLevel[0]];
- gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[3][App.DataManager.foodLevel[3]];
- break;
- case FoodType.YellowSteak:
- App.DataManager.MissionComplete[0]++;
- gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[0][App.DataManager.foodLevel[0]];
- gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[4][App.DataManager.foodLevel[4]];
- break;
- case FoodType.RedSteak:
- App.DataManager.MissionComplete[0]++;
- gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[0][App.DataManager.foodLevel[0]];
- gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[5][App.DataManager.foodLevel[5]];
- break;
- }
- App.LocalStorageUtil.setJsonObj(App.LocalStorageUtil.list_missionComplete, App.DataManager.MissionComplete);
- gameScene.instance.updateWinCoin();
- App.SoundManager.playEffect(SoundManager.addCoin);
- }
- public judgeFoodFull(): boolean{
- for (let i = 0; i < this.foodNum; i++) {
- // console.log("aaa------judgeFoodFull----", this.foodTypeList[i]);
- if(this.foodTypeList[i] != FoodType.None)
- {
- return false;
- }
- }
- return true;
- }
- update (dt) {
- if(this.m_state != PersonState.Waite)
- return;
- if(!this.m_pause){
- this.leftTime -= dt;
- }
- }
- }
|