Person.ts 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. import gameScene from "./gameScene";
  2. import { App } from "./Manager/App";
  3. import { SoundManager } from "./Manager/SoundManager";
  4. import Beef, { FoodType } from "./Beef";
  5. const {ccclass, property} = cc._decorator;
  6. export enum PersonState {
  7. None = 0,
  8. Comming,
  9. Waite,
  10. FullOut,
  11. HungryOut,
  12. };
  13. @ccclass
  14. export default class Person extends cc.Component {
  15. @property(cc.ProgressBar)
  16. pBar: cc.ProgressBar = null;
  17. @property([cc.Prefab])
  18. foodKindPerfabs: cc.Prefab[] = [];
  19. @property(cc.Node)
  20. meun: cc.Node = null;
  21. @property(cc.Node)
  22. love: cc.Node = null;
  23. m_state = PersonState.Comming;
  24. leftTime = 50;
  25. m_pause = false;
  26. foodNum = 3;
  27. foodList: cc.Node[] = [];
  28. foodTypeList: FoodType[] = [];
  29. foodPos: cc.Vec2[] = [cc.v2(-105, 70), cc.v2(-105, 25), cc.v2(-105, -20)];
  30. // LIFE-CYCLE CALLBACKS:
  31. onLoad () {
  32. this.meun.active = false;
  33. this.love.active = false;
  34. // 点餐的数量
  35. // this.foodNum = Math.ceil(Math.random() * 3);
  36. for (let i = 0; i < this.foodNum; i++) {
  37. this.foodTypeList[i] = FoodType.None;
  38. }
  39. this.leftTime -= App.DataManager.CurrentIntoLevel;
  40. }
  41. start () {
  42. }
  43. public setState(state: PersonState){
  44. this.m_state = state;
  45. if(state == PersonState.Waite){
  46. this.meun.active = true;
  47. this.love.active = true;
  48. App.SpinManager.PlaySpinAnimation(this.love, "newAnimation", true);
  49. let guideGood = [0, 1, 2];
  50. let foodKind = App.DataManager.levelFoodKind[App.DataManager.CurrentIntoLevel - 1];
  51. for (let i = 0; i < this.foodNum; i++) {
  52. let foodIndex = Math.floor(Math.random() * foodKind);
  53. if(App.DataManager.guideStep < 5){
  54. foodIndex = guideGood[i];
  55. }
  56. let food = cc.instantiate(this.foodKindPerfabs[foodIndex]);
  57. food.setScale(0.5);
  58. food.setPosition(this.foodPos[i]);
  59. this.node.addChild(food);
  60. this.foodList[i] = food;
  61. this.foodTypeList[i] = foodIndex + 1;
  62. }
  63. this.pBar.progress = 1;
  64. if(!this.m_pause){
  65. cc.tween(this.pBar).to(this.leftTime, {progress: 0}).call(()=>{
  66. this.setState(PersonState.HungryOut);
  67. }).start();
  68. }
  69. }
  70. else if(state == PersonState.FullOut){
  71. App.DataManager.MissionComplete[2]++;
  72. App.LocalStorageUtil.setJsonObj(App.LocalStorageUtil.list_missionComplete, App.DataManager.MissionComplete);
  73. cc.Tween.stopAllByTarget(this.pBar);
  74. this.meun.active = false;
  75. this.love.active = false;
  76. }
  77. else if(state == PersonState.HungryOut){
  78. // gameFail
  79. gameScene.instance.GameFail();
  80. }
  81. }
  82. public getFoodWorldPos(foodt: FoodType): cc.Vec2{
  83. for (let i = 0; i < this.foodNum; i++) {
  84. if(this.foodTypeList[i] == foodt){
  85. this.addFoodCoin(foodt);
  86. this.foodTypeList[i] = FoodType.None;
  87. cc.tween(this.foodList[i]).delay(0.5).call(()=>{
  88. this.foodList[i].removeFromParent();
  89. this.foodList[i] = null;
  90. }).start();
  91. return this.node.convertToWorldSpaceAR(this.foodPos[i]);
  92. }
  93. }
  94. }
  95. addFoodCoin(foodt: FoodType){
  96. switch(foodt){
  97. case FoodType.PureSteak:
  98. App.DataManager.MissionComplete[0]++;
  99. gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[0][App.DataManager.foodLevel[0]];
  100. break;
  101. case FoodType.Drink:
  102. App.DataManager.MissionComplete[1]++;
  103. gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[1][App.DataManager.foodLevel[1]];
  104. break;
  105. case FoodType.CocumberSteak:
  106. App.DataManager.MissionComplete[0]++;
  107. gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[0][App.DataManager.foodLevel[0]];
  108. gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[2][App.DataManager.foodLevel[2]];
  109. break;
  110. case FoodType.TomatoSteak:
  111. App.DataManager.MissionComplete[0]++;
  112. gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[0][App.DataManager.foodLevel[0]];
  113. gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[3][App.DataManager.foodLevel[3]];
  114. break;
  115. case FoodType.YellowSteak:
  116. App.DataManager.MissionComplete[0]++;
  117. gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[0][App.DataManager.foodLevel[0]];
  118. gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[4][App.DataManager.foodLevel[4]];
  119. break;
  120. case FoodType.RedSteak:
  121. App.DataManager.MissionComplete[0]++;
  122. gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[0][App.DataManager.foodLevel[0]];
  123. gameScene.instance.curLevelWinCoin += App.DataManager.foodSoldCoin[5][App.DataManager.foodLevel[5]];
  124. break;
  125. }
  126. App.LocalStorageUtil.setJsonObj(App.LocalStorageUtil.list_missionComplete, App.DataManager.MissionComplete);
  127. gameScene.instance.updateWinCoin();
  128. App.SoundManager.playEffect(SoundManager.addCoin);
  129. }
  130. public judgeFoodFull(): boolean{
  131. for (let i = 0; i < this.foodNum; i++) {
  132. // console.log("aaa------judgeFoodFull----", this.foodTypeList[i]);
  133. if(this.foodTypeList[i] != FoodType.None)
  134. {
  135. return false;
  136. }
  137. }
  138. return true;
  139. }
  140. update (dt) {
  141. if(this.m_state != PersonState.Waite)
  142. return;
  143. if(!this.m_pause){
  144. this.leftTime -= dt;
  145. }
  146. }
  147. }